Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
-
노드는 서버가 아니며 JavaScript 런타임이다.
그렇다면 JavaScript로 서버를 어떻게 실행시킬까?
const http = require('http');
const server = http.createServer((req,res) => {
console.log(req.url, req.method);
res.end('Hello node');
})
server.listen(3065, () => {
console.log('서버 실행 중')
})
먼저, 자바스크립트로 서버를 실행하기 위해서 백앤드 파일에 app.js를 만들고 위와 같은 코드를 작성한다.
node에서 제공하는 http가 서버를 연동시켜 준다.
따로 http를 다운 받을 필요없다.
1번의 요청에 1번의 응답만 할 수 있기 때문에 요청에 따른 수많은 라우터가 필요하다. 수많은 코드를 관리하고 정리하기 위해 express를 사용한다.
const express = require('express');
const app = express();
app.listen(3065, () => {
console.log('서버 실행 중')
})
기존에 createServer안에 수많은 Method와 url를 한꺼번에 if문으로 작성하게 되면 장황한 코드를 만들게 되는데 Express를 사용해 코드를 분리하고 정리해줄 수 있다.
Express를 npm으로 먼저 다운로드 받아준다.
그리고 위의 코드로 변경하는데, express를 받아오고, app변수로 실행을 시켜줘야한다. 그리고 listen으로 서버 포트와 연결시켜준다.
app.get('/', (req, res) => {
res.send()
})
express에서의 method는 app 바로 뒤에 .과 함께 작성하고 첫번째 인자에 url를 넣어준다.
먼저, routes 폴더를 만들어서 url이 겹치는 것으로 javascript file를 하나 만든다.
app.js
const cardRouter = require('./routes/card');
app.use('/card', cardRouter)
app.use를 사용해서 분리한 라우터를 넣어주고, 중복되는 경로를 prefix로 앞애 넣어준다. 그리고 require로 불러준다.
routes > card.js
const express = require('express');
const router = express.Router()
router.post('/', (req, res) => { //POST /post
res.json({})
});
router.delete('/', (req, res) => { //DELETE /post
res.json({})
});
module.exports = router;
express를 먼저 호출하고 router로 연결시킨 후 app대신 router로 연결시켜 준다. 그리고 중복되는 url은 삭제하고 /만 넣어준다.