express에서 route를 사용하는 일반전인 방법은 두가지가 있다.
첫번째는 app뒤에 메소드를 작성하는 방법
두번째는 라우트를 자제척으로 지정하고난 뒤에 메소드를 작성하는 방법.
여기서 좀 더 자세히 적고 싶은 방법은 두번째 방법이다. 첫번째 방법은 이때까지 많이 사용해봤던 방식이고, 익숙하여 새로운 방법에 대해서 적으려고 한다.
첫번째 방법 맛보기
const express = require("express") const app = express(); // or const app = require('express')(); const cors = require("cors"); const bodyParser = require("body-parser"); const jsonParser = bodyParser.json(); // 라우팅 시작 app.use(cors()); app.get('/', (res,req)=>{ //... todo }) app.post('/', jsonParser, (res,req)=>{ //...todo })
위의 코드처럼 하나 하나 다 지정해야하는것이 첫번째 방법이다.
이번에 좀 더 간단하게 적을 수 있는 방법인 두번째 방법이다.
공식문서를 찾아보면 더 좋겠다.
const app = require('express')(); // or const express = require("express") // const app = express(); const cors = require("cors"); const bodyParser = require("body-parser"); const jsonParser = bodyParser.json(); app .route('/') .get((req, res) => { res.send('hi'); }) .post(jsonParser, (req, res) => { res.status(201).send(JSON.stringify(req.body)); });
위의 코드가 두번째 방법이다.
이 방법이 첫번째 방법과 비교를 했을때,
체이닝이 좀 더 직관적으로 되어있어서 코드를 읽기 쉽는 장점이 있는거 같다.
여기서 추가로 말하고 싶은 부분은 body-parse다
예전에는 body-parse미들 웨어를 사용하고 싶었다면
npm에서 install을 해줬어야했다. 그리고 JS파일 안에다가
const bodyParser = require("body-parser"); const jsonParser = bodyParser.json(); app .route('/') .post(jsonParser, (req, res) => { res.status(201).send(JSON.stringify(req.body)); });
이렇게 post 메소드의 첫번째 인자로 jsonParser를 넣어주는 방법이 있었고
또 다른 방법은 아래 코드처럼 app.use(jsonParser)
을 추가하면 됐다.
const bodyParser = require("body-parser"); const jsonParser = bodyParser.json(); app.use(jsonParser) // -----------(추가하기) app .route('/') .post((req, res) => { res.status(201).send(JSON.stringify(req.body)); });
그러나 요즘 Express v4.16.0 기준으로 express.js안에 body parser가 내장 되었다. 그래서 우리는 좀 더 간단하게 코드를 작성할 수 있다. app.use(express.json());
를 사용하면 된다.
const express = require("express"); const cors = require("cors"); const app = express(); app.use(cors()); app.use(express.json()); // app.use(express.json()); 추가만 하면 끝 !!! app .route("/") .get((req, res) => { res.send(JSON.stringify(data)); }) .post((req, res) => { res.status(201).send(JSON.stringify(req.body)); });