Hello, Android!

body-parser, cookie-parser 본문

Node

body-parser, cookie-parser

lwndnjs93 2021. 2. 16. 19:14

- body-parser

body-parser미들웨어는 요청의 본문을 해석하는 미들웨어이다

익스프레스 4.16.0버전부터 body-parser의 일부 기능이 익스프레스에 내장되었다

app.use(express.json())에서 요청의 본문이 json일때 해석하여, req.body에 들어간다

app.use(epxress.urlencoded({extended: false}))에서는 요청의 쿼리스트링을 해석하여

req.query에 들어간다

extended옵션에 false를 넣었는데, 해당 값이 false인 경우에는

노드에 기본적으로 내장되어있는 querystring 모듈을 사용하며

true인 경우에는 qs모듈을 사용한다

 

지금까지는 POST, PUT에서 본문을 받을때, 스트림을 사용하여

버퍼를 전부 받았을때를 확인하기 위해 req.on("data"), req.on("end")

를 사용하였지만, 이제 body-parser를 사용하면 내부적으로 스트림을 처리하여

req.body에 넣어주기 때문에 직접 스트림을 사용할 필요가 없다

 

위의 예제에서는 json, 쿼리스트링을 처리하였지만

raw와 text형식의 데이터도 대응이 가능하다

하지만 두 형식을 처리하기 위해서는 body-parser를 별도로 설치해야 한다

 

- cookie-parser

cookie-parser는 요청에 동봉된 쿠키를 객체로 만들어 주며, 유효기간이 지난 쿠키는

미들웨어가 자동으로 필터링 한다

- 쿠키 읽기

사용법은 cookieParser() 함수를 호출하여 사용한다

이번에에는 매개변수를 아무것도 넣지 않았지만

서명된 쿠키를 사용하는 경우 매개변수에 비밀키를 넣어주면 검증을 한다

cookieParser를 통해 해석된 쿠키는 req.cookies를 통해 접근이 가능하다

 

- 쿠키 만들기

쿠키를 만드는 경우에는 res.cookie를 통해 만들며

res.cookie(키, 값, 옵션) 의 형태로 사용이 가능하다

옵션

- maxAge : 만료 시간을 밀리초 단위로 설정

- expires : 만료 날짜를 GMT 시간으로 설정

- path : 쿠키의 경로 디폴트 값은 "/"

- domain : 도메인 네임 디폴트 값은 "loaded"

- secure : https에서만 쿠키를 사용할 수 있도록 한다

- httpOnly : 웹서버를 통해서만 쿠키에 접근할 수 있도록 한다

- signed : 쿠키에 대한 서명을 지정한다

 

- 쿠키 삭제

쿠키 삭제는 res.clearCookie()를 사용한다

clearCookie(키, 옵션) 의 형태로 사용하며, 키는 삭제할 쿠키의 키

옵션은 해당 쿠키가 생성될때 설정한 옵션 그대로 지정해야 한다

다만 maxAge, expires는일치하지 않아도 된다

 

 

 

'Node' 카테고리의 다른 글

dotenv, morgan, static  (0) 2021.02.15
express에서의 라우팅과 미들웨어  (0) 2021.02.08
npm pakage.json  (0) 2021.02.08
클러스터  (0) 2021.02.06
쿠키와 세션  (0) 2021.02.05