일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- toString
- object
- 게시판
- 출처 : https://webdir.tistory.com/506
- https://velog.io/@velopert/create-typescript-react-component
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- Today
- Total
Back Ground
Node - Express 미들웨어 body-parser 본문
body-parser
요청의 본문을 해석해주는 미들웨어이다.
보통 폼 데이터나 AJAX요청의 데이터를 처리한다.
app.js
1 2 3 4 5 6 | ... var bodyParser = require('body-parser'); ... app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false})); ... | cs |
그런데 이전에 express미들웨어에서의 app.js에서는 body-parser를 사용하지 않았다.
익스프레스 4.16.0버전 부터 body-parser의 일부 기능이 익스프레스에 내장되었기 때문이다.
그래서 body-parser를 설치하지 않고도 다음과 같이 할 수 있다.
↓
1 2 | app.use(express.json()); app.use(express.urlencoded( {extended : false } )); | cs |
단, body-parser가 필요한 경우도 있다
body-parser는
JSON과 URL-encoded 형식의 본문 외에도
Raw, Text형식의 본문을 추가로 해석할 수 있다.
Raw는 본문이 버퍼 데이터일 때, Text는 본문이 텍스트 데이터일 때 해석하는 미들웨어이다.
서비스에 적용하고 싶다면 body-parser를 설치한 후 다음과 같이 추가한다.
1 2 | app.use(bodyParser.raw()); app.use(bodyParser.text()); | cs |
JSON은 JSON 형식의 데이터 전달 방식이고,
URL-encoded는 주소 형식으로 데이터를 보내는 방식이다.
urlencoded 메서드를 보면
1 | { extended: false } | cs |
라는 옵션이 들어있다.
모듈을 사용하여 쿼리스트링을 해석하고, true면 qs모듈을 사용하여 쿼리스트링을 해석한다.
qs모듈은 내장 모듈이 아니라 npm패키지이며,
querystring모듈의 기능을 조금 더 확장한 모듈이다.
이전에는
POST와 PUT요청의 본문을 전달 받으려면 req.on('data')와 req.on('end')로 스트림을 사용해야 했었다.
https://backback.tistory.com/327
body-parser를 사용하면 그럴 필요가 없다.
이 패키지가 내부적으로 본문을 해석해 req.body에 추가해준다.
예를 들어 JSON 형식으로 { name: 'backback' , book: 'nodejs' }를 본문으로 보낸다면 req.body에 그대로 들어간다.
- URL-encoded 형식으로 name=backback&book=node.js를 본문으로 보낸다면
- req.body에 { name : 'backback' , book: 'nodejs' }가 들어간다.
body-parser가 모든 본문을 해석해주는 것은 아니다.
multipart/form-data 같은 폼을 통해 전송된 데이터는 해석하지 못한다.
출처 : node.js 교과서
'Javascript > Node.js' 카테고리의 다른 글
Node - Express 미들웨어 express-session (0) | 2019.02.27 |
---|---|
Node - Express 미들웨어 static (0) | 2019.02.27 |
Node - Express 미들웨어 morgan (0) | 2019.02.26 |
Node - Express 커스텀 미들웨어 만들기 (0) | 2019.02.26 |
Node - Express 미들웨어 (1) | 2019.02.25 |