body-parser
API즉 http request를 이용하는 req.body를 사용할때는 body-parser가 필요한데
내가원하는 형태의 데이터로 parse(가공) 해야하기때문에 반드시 필요함(parse는 compile에 속함)
또 express 문서에따르면
req.body
Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as body-parser and multer.
req.body는 request body로 요청된 데이터를 의미하는데 기본적으로 undefined로 뜨게되서 미들웨어인 body-parser와 multer를 이용해야한다고함.(multer은 이미지등 파일업로드관련할때 필요할듯)
사용예시
npm install body-parser
const app = require('express')()
const bodyParser = require('body-parser')
const multer = require('multer') // v1.0.5
const upload = multer() // for parsing multipart/form-data
app.use(bodyParser.json()) // for parsing application/json
app.use(bodyParser.urlencoded({ extended: false })) // for parsing application/x-www-form-urlencoded
app.post('/profile', upload.array(), function (req, res, next) {
console.log(req.body)
res.json(req.body)
})
요새는 최신 express에서 body-parser를 지원하기때문에 다운받아 사용하지않아도되서 더 간단함
app.use(express.urlencoded({extended: false}))
여기서 잠깐, urlencoded의 옵션 extended가 false인 경우 URL-encoded 데이타를 쿼리스트링 라이브러리에 따르고 true의 경우에는 qs라이브러리를 따른다고한다. default값이 true인 qs라이브러리는 npm으로 따로 설치를해줘야한다고해서 false로 따로지정한다고한다.
This option allows to choose between parsing the URL-encoded data with the
querystring library (when false) or the qs library (when true). The “extended” syntax allows for rich objects and arrays to be encoded into the URL-encoded format, allowing for a JSON-like experience with URL-encoded. For more information, please see the qs library.
결론
공식문서의 중요성..
http://expressjs.com/en/5x/api.html#express.urlencoded
http://expressjs.com/en/resources/middleware/body-parser.html
https://velog.io/@yejinh/express-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4-bodyParser-%EB%AA%A8%EB%93%88
반응형
'Backend > node.js' 카테고리의 다른 글
Autoincrement : mongoose-sequence 몽구스 자동증가 (0) | 2022.04.05 |
---|---|
몽구스 스키마부터 모델 만들기 create mongoose schema and Model (0) | 2022.03.07 |
[express] pug 설치 및 사용방법(템플릿 그리기) (0) | 2021.09.17 |
[express] 미들웨어(+ 에러핸들링) (0) | 2021.09.07 |
[node.js] express 설치와 환경세팅 (0) | 2021.09.04 |