express
- body-parser 요청의 본문을 해석해주는 미들웨어입니다. 보통 폼 데이터나 AJAX요청의 데이터를 처리합니다. 익스프레스 4.16.0 버전 부터 Body-parser의 일부 기능이 익스프레스에 내장됨. body-parser 설치하지 않고도 다음과 같이 할 수 있음 단, body-parser 가 필요한 경우 JSON, URL-encoded 형식의 본문 외에도 Raw, Text 형식의 본문을 추가로 해석할 수 있습니다. Raw는 본문이 buffer data, Text data 일때 해석하는 미들웨어입니다. 서비스에 적용하고 싶다면 body-parser 설치 후 app.use(bodyParser.raw()); app.use(bodyParser.text());
JSON은 JSON 형식의 데이터 전달 방식이고, URL-encoed는 주소 형식으로 데이터를 보내는 방식입니다. 보통 폼 전송이 URL-encoded 방식으로 주로 사용합니다. urlencoded 메서드를 보면 { extended: false } 라는 옵션이 들어 있습니다. 이 옵션이 false 면 노드의 querystring 모듈을 사용하여 쿼리스트링을 해석하고, True 이면 qs모듈을 사용하여 쿼리스트링을 해석합니다. qs 모듈은 내장 모듈이 아니라 npm 패키지이며, querystring 모듈의 기능을 조금 더 확장한 모듈입니다
POST,PUT 요청의 본문을 전달받으려면 req.on(‘data’), req.on(‘end’) 로 스트림을 사용해야 하지만 bodyParser을 사용하면 그럴 필요가 없습니다. 패키지가 내부적으로 본문을 해석해 req.body에 추가해줍니다.
예를 들어 json 형식으로 { name: ‘name’ age: 32} 을 본문으로 보낸다면 req.body에 그래도 들어갑니다. URL-encoded 형식으로 name=name&age=32 을 본문으로 보낸다면 req.body에 { name: ‘name’ age: 32} 으로 들어가게됩니다.
body-parser이 모든 본문을 해석해주는 것은 아닙니다. multipart/form-data 같은 폼을 통해 전송된 데이터는 해석하지 못합니다. 이는 다른 모듈을 사용해서 해석해야 합니다.
- cookie-parser cookie-parser는 요청에 동봉된 쿠기를 해석해줍니다. 해석된 쿠기들은 req.cookies 객체에 들어갑니다. 예를 들어 name=name 쿠키를 보냈다면 req.cookies는 { name: ‘name’ }
app.use(cookieParser(‘secret codde’)); 이와 같이 첫 번째 인자로 문자열을 넣어줄 수 있습니다. 쿠키들은 제공한 문자열로 서명된 쿠키가 됩니다. 서명된 쿠키는 클라이언트에서 수정했을 때 에러가 발생하므로 클라이언트에서 쿠키로 위험한 행동을 하는 것을 방지할 수 있습니다.
-
static staic 미들웨어는 정적인 파일들을 제공합니다. 자체적으로 정적 파일 라우터 기능을 수행하므로 최대한 위쪽에 배치하는 것이 좋습니다. 그래야 서버가 쓸데없는 미들웨어 작업을 하는 것을 막을 수 잇습니다. static 미들웨어를 morgan 보다 더 위로 올리면 정적 파일 요청이 기록되지 않기 때문입니다.
-
express-session 세션관리용 미들웨어입니다. 로그인 등의 이유로 세션을 구현할 때 매우 유용합니다.