post로 데이터를 보낼 때 json형태로 사용을 한다.
그런데 json 형태로 데이터가 오가지 않는다.
2가지 방법이 존재한다.
이전에는 express에 json형태를 다루지 못했다. 그래서 body-parser라는 모듈이 따로 존재했다.
body-parser : expressjs.com/en/resources/middleware/body-parser.html
const bodyParser = require('body-parser')
const express = require('express')
const app = express()
const port = 80
// application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({extended: true}))
// application/json
app.use(bodyParser.json())
body-parser를 이용하면 이렇게 사용하면 된다.
그러나 이제 express에서 지원을 한다.
const express = require('express');
// application/json
app.use(express.json());
// application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: true }));
이렇게 사용하면된다. 정말 간단하다. 이렇게 하면 post에서 json 데이터를 받을 수 있다.
받을 때 req.body 형태로 받으면 된다.
urlencoded에 다양한 옵션이 존재한다.
extended
옵션에 따라 인코딩하는 방식이 달라진다.
false면 querystring모듈을 사용하여 쿼리스트링을 해석하고, true이면 qs모듈을 사용하여 쿼리스트링을 해석한다.
기본적으로 true로 설정되어있다.
var data = {
info: {
name: 'good',
age: 20
},
nickname: [ 'gg', 'oo' ]
}
// qs.parse(data) 결과
{
info: {
name: 'good',
age: '20'
},
nickname: [ 'gg', 'oo' ]
}
// querystring.parse(data) 결과
{
'info[name]': 'good',
'info[age]': '20',
'nickname[0]': 'gg',
'nickname[1]': 'oo'
}
inflate
압축된 body처리를 활성화 또는 비활성화한다.
비활성화되면 압축된 body는 거부된다.
기본값은 true
limit
최대 요청 body 크기를 제어한다.
값이 숫자이면 값은 바이트 수를 지정한다.
문자열인 경우 값은 구문 분석을 위해 바이트 라이브러리로 전달된다.
기본값은 "100kb" 이다.
parameterLimit
이 옵션은 최대 파라미터의 수를 지정할 수 있다.
즉, 보낼 수 있는 데이터 개수 제한!
파라미터 개수가 최대치 보다 많으면 에러가 발생한다.
기본값 1000 이다.
type
미들웨어가 구문 분석할 미디어 유형을 결정하는데 사용한다.
이 옵션은 문자열, 배열, 함수가 될 수 있다.
함수가 아닌 경우 type 옵션은 type-is 라이브러리에 직접 전달되며 확장 이름 (ex: urlencoded)
MIME 형식 (ex: application/x-www-form-urlencoded) 또는 와일드 카드 (ex: */x-www-form-urlencoded).
함수인 경우 type 옵션은 fn(req)로 호출되고 요청이 정확한 값을 반환하면 구문 분석된다.
기본값 "application/x-www-form-urlencoded"
verify
이 옵션이 제공되면, verify(req, res, buf, encoding)로 호출된다. 여기서 buf는 원시 요청 본문의 버퍼이고
encoding은 요청의 인코딩이다.
오류를 발생시켜 구문 분석을 중단할 수 있다.
기본값 undefinded
'프로그래밍 > nodejs' 카테고리의 다른 글
express 설치 및 사용법 (0) | 2021.01.14 |
---|---|
nodejs, npm 설치 (0) | 2020.12.30 |