기본적인 접근: 사용자 혹은 남이 만든 기능을 우리가 사용함으로써 편리하게 코딩할수있음
많이쓰는 Third-party middleware
body-parser
사용자가 요청한 post데이터를 내부적으로 분석해가지고,
원래의 app.post 보면 콜백함수의 request 안에 request.body라는 프로퍼티는 원래 없는데 바디파서가 req.body를 생성해준다.
compression
데이터가 크면 그거를 주고받는데 비용 및 시간 손실이 크므로, 압축하여 주고받기 위해 사용.
이때 무슨형식으로 압축했는지랑+브라우저가 무슨 형식으로 풀어야하는지 알려주므로 사용.
(ex gzip형식 등등..)
미들웨어 직접만들기
app.use(function(request, response, next){
fs.readdir('./data', function(error, filelist){
request.list = filelist;
next(); //
})
});
현재의 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우에는 next()를 호출하여 그 다음 미들웨어 함수에 제어를 전달해야 합니다. 그렇지 않으면 해당 요청은 정지된 채로 방치됩니다.
( 내가 예시로 만든 이것은 이제 모든요청에 대하여 자동으로 readdir을 하여 request.list 프로퍼티를 생성함)
미들웨어는 순차적으로 실행된다.
★ 모든 app.use나, app.get(get방식에만 적용), app.post(post방식에만 적용)
모두 미들웨어의 연속이다 라고 할 수 있음. 그래서app.use(function(req, res, next){ res.status(404).send('Sorry cant find that!'); })
이런 코드들은 끝에 작성한다. ( 위에서 순차적으로 찾고 실행되다가 결국 여기까지 오면 404notfound를 실행시킨다.)
이 말고도 error처리를 위한 app.use(function(err, req, res, next){});
등등 끝에있어야 할 미들웨어들도 존재한다.