728x90
미들웨어



- 익스프레스는 미들웨어로 구성된다.
- 요청과 응답의 중간에 위치하여 app.use(미들웨어)로 장착할 수 있다.
- 위에서 아래로 순서대로 실행된다
- 미들웨어는 req, res, next가 매개변수인 함수이다.
- req: 요청, res: 응답 조작 가능
- next()로 다음 미들웨어로 넘어감
- 익스프레스 미들웨어들도 다음과 같이 축약 가능
- static 미들웨어에서 파일을 찾으면 next를 호출 안 하므로 json, urlencoded, cookieParser는 실행되지 않음
- 순서가 중요
에러 처리 미들웨어
app.use((err, req, res, next) => {
//에러 미들웨어는 반드시 4개를 모두 써야한다.
console.error(err);
res.status(500).send("에러가 발생했습니다."); //status 코드를 속여서 전달할 수도 있다
});
- 에러가 발생하면 에러 처리 미들웨어로 처리해야 한다
- err, req, rs, next까지 매개변수가 4개를 반드시 써야 한다
- 첫 번째 err에는 에러가 관한 정보가 담긴다.
- res.status 메서드로 HTTP 상태 코드를 지정 가능(기본값 200)하다.
- 에러 처리 미들웨어를 안 연결해도 익스프레스가 에러를 알아서 처리해주긴 한다.
- 특별한 경우가 아니면 가장 아래에 위치하도록 하자!!
next 활용법

- next를 호출해야 다음 코드로 넘어간다
- next를 주석 처리하면 응답이 전송되지 않는다
- 다음 미들웨어(라우터 미들웨어)로 넘어가지 않기 때문이다
- next에 인수로 값을 넣으면 에러 핸들러로 넘어간다(‘route’인 경우 다음 라우터로)
미들웨어 간 데이터 전달

- req나 res 객체 안에 값을 넣어 데이터 전달 가능하다
- app.set과의 차이점: app.set은 서버 내내 유지, req, res는 요청 하나 동안만 유지한다
- express-session을 사용하면 session에도 넣을 수 있지만, 다음 요청에도 그 값이 남아있는 단점이 있다
- req.body나 req.cookies 같은 미들웨어의 데이터와 겹치지 않게 조심하자
미들웨어 확장법


- 미들웨어(req, res, next)를 쓰면 미들웨어를 확장할 수 있다.
- 로직이 들어갈 수 있기 때문에 확장에 용이하다(로그인 검사하는 로직을 쓸 때, 유용)
728x90
'Node > 익스프레스 웹 서버 만들기' 카테고리의 다른 글
| dotenv 사용하기 (0) | 2022.09.10 |
|---|---|
| 멀티파트 데이터 형식 (0) | 2022.09.10 |
| static,express-session 미들웨어 (0) | 2022.09.10 |
| morgan, bodyParser, cookieParser 미들웨어 (0) | 2022.09.09 |
| express 서버 사용해보기 (0) | 2022.09.09 |