노드와 익스프레스를 사용하여 처음부터 간단한 로컬 서버 만들기
7823 단어 nodejavascript
목표
먼저 Hello World를 표시하는 간단한 앱을 만든 다음 라우팅에 express.js를 사용합니다. 마지막으로 몇 가지 API를 생성하고 라우팅합니다.
전제 조건
Hello World를 반환하는 간단한 로컬 서버로 앱 만들기
// create your own directory
$ mkdir node-practice && cd node-practice
// initialize your project
$ npm init -y
// create your app.js
$ touch app.js
$ vi app.js
app.js를 편집합니다.
const http = require('http');
const server = http.createServer((req, res)=>{
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World!');
})
server.listen(8080);
아래 명령을 실행하고
localhost:8080
에 액세스합니다. 페이지에 Hello World가 표시되어야 합니다.$ node app.js
익스프레스 소개
우리는 익스프레스를 설치할 것입니다.
$ npm install express -save
공용 폴더 만들기
$ mkdir public && cd public
$ touch index.html
$ mkdir css img js
이제 node_modules를 제외한 폴더가 다음과 같아야 합니다.
$ tree -I node_modules
.
├── app.js
├── package-lock.json
├── package.json
└── public
├── css
├── img
├── index.html
└── js
4 directories, 4 files
각 파일 안에 다음 파일을 생성합니다.
node-practice/public$ cd css && touch sample.css
node-practice/public$ cd js && touch sample.js
내 img 폴더 안에 샘플 사진이 있습니다.
이제 폴더는 다음과 같아야 합니다.
$ tree -I node_modules
.
├── app.js
├── package-lock.json
├── package.json
└── public
├── css
│ └── sample.css
├── img
│ └── sample.jpeg
├── index.html
└── js
└── sample.js
4 directories, 7 files
index.html의 경우:
<!DOCTYPE html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>TEST</title>
<link rel="stylesheet" href="/css/sample.css">
</head>
<body>
<h1>Hello World!</h1>
<p id="hoge"></p>
<div>
<img src="/img/sample.jpeg">
</div>
<script src="/js/sample.js"></script>
</body>
</html>
sample.js의 경우:
/* /public/js/sample.js */
{
const el = document.getElementById('hoge');
el.innerText = 'HAHAHAHAHAHAHA!!!!';
}
sample.css의 경우:
/* /public/css/sample.css */
h1 {
font-size: 1.5rem;
color: #0000ff;
}
img {
max-width: 100%;
}
app.js 편집
const express = require('express');
const app = express();
const path = require('path');
app.listen(8080, () => {
console.log('Running at Port 8080...');
});
app.use(express.static(path.join(__dirname, 'public')));
app.use((req, res) => {
res.sendStatus(404);
});
다음을 실행하면
localhost:8080
에 웹 페이지가 표시되어야 합니다.$ node app.js
API 만들기
먼저 폴더를 생성하여 API를 생성합니다.
// at the root directory of the project.
$ mkdir api && cd api
$ touch data.json index.js
data.json에 임의의 데이터를 생성합니다.
{
"id": "W0001",
"title": "I Love Cats and Dogs",
"price": 3000000000000
}
index.js의 경우 API 라우터를 내보냅니다.
const express = require('express');
const router = express.Router();
router.use(express.json());
router.get('/foo', (req, res) => {
res.sendFile(__dirname + '/data.json', (err) => {
if (err) {
res.sendStatus(400);
} else {
console.log('completed');
}
});
});
router.route('/bar')
.get((req, res) => {
res.json(req.query);
})
.post((req, res) => {
const nameArray = ['id', 'name', 'address'], failed = nameArray.some(v=>!req.body[v]);
if (failed) {
res.sendStatus(400);
} else {
res.sendStatus(200);
}
});
module.exports = router;
폴더는 이제 다음과 같아야 합니다.
$ tree -I node_modules
.
├── api
│ ├── data.json
│ └── index.js
├── app.js
├── package-lock.json
├── package.json
└── public
├── css
│ └── sample.css
├── img
│ └── sample.jpeg
├── index.html
└── js
└── sample.js
5 directories, 9 files
이제 루트 디렉토리에서 app.js를 편집합니다.
const express = require('express');
const app = express();
const path = require('path');
const api = require('./api/');
app.listen(8080, () => {
console.log('Running at port 8080...');
});
app.use('/api', api);
app.use(express.static(path.join(__dirname, 'public')));
app.use((req, res) => {
res.sendStatus(404);
});
이제 node app.js를 실행합니다.
API 테스트
Advanced REST Client을 사용하여 API가 어떻게 작동하는지 살펴보겠습니다.
http://localhost:8080
를 던지면 다음과 같은 결과를 얻습니다.http://localhost:8080/api/foo
를 던지면 data.json
를 얻습니다.http://localhost:8080/api/bar?name=johndoe&address=USA&age=17
를 던지면 URL 값에서 json을 가져옵니다.마지막으로
bar
api를 사용하여 일부 데이터를 게시해 보겠습니다. 본문 매개변수를 편집하여 추가할 수 있습니다.이제 GET과 POST 모두에서 API가 작동하는 것을 볼 수 있습니다!
도움이 되었기를 바랍니다.
Reference
이 문제에 관하여(노드와 익스프레스를 사용하여 처음부터 간단한 로컬 서버 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/greenteabiscuit/creating-a-simple-local-server-from-scratch-using-node-and-express-4hjf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)