Search

#006 #Express 미들웨어

Express 공식문서

next

현재 까지의 진도에서는 모든 라우팅 주소에서 인증이 필요하면 라우팅 마다 인증 코드를 구성해야된다. 그렇게 되면 코드 중복의 양이 엄청나게 될 것
app.use 함수가 해당 함수를 미들웨어로 지정하고 next()로 다음 라우터로 이동 한다.
즉 미들웨어 함수를 진입점으로 사용하면, 여기서 인증처리 같은 공통로직을 처리하고 다음라우터로 넘기는 작업을 할 수 있다. 따라서, 인증 코드를 중복해서 작성할 필요가 없다.

개별 미들웨어 설정

같은 라우팅 주소를 사용하고 next 매개변수를 넣으면 미들웨어로 로직을 처리하고 다시 실제 로직을 처리하는 주소로 전달 된다.
서버를 켜고 /cats/som 주소로 요청을 넣으면
요청이 미들웨어에서 멈추지 않고 2번까지 넘어간 것이 확인 가능하다.

하지만 순서가 바뀐다면 미들웨어가 실행이 될까??

미들웨어를 아래에 위치시키면, 해당 미들웨어는 주소를 캐치해서 먼저 실행이 될까? 아니면 위에서 실제 로직이 해당 요청을 응답으로 처리를 했으므로 종료가 될까???
해당 요청은 위의 본 로직에서 응답을 반환 하였으므로, 2 번을 응답하고 요청이 종료가 되었다. 따라서 미들웨어를 처리할려면 실제 로직보다 위에서 순차적으로 처리해야됨을 알 수 있다.

미들 웨어로 404: not found 로직 처리

위에서 설명된 미들웨어의 특징을 고려해보면, 라우팅을 찾지 못했을 때의 에러 로직을 처리할 수 있다.
위 처럼, 모든 라우팅을 찾지 못하면 제일 밑에서 미들웨어로 해당 요청을 처리할 수 있는데, 여기서 404: not found 같은 요청을 처리할 수 있다.
물론 여기서 cats/som1213 같은 정의하지 않은 URL을 요청하면 에러 상태를 404로 처리 하였지만, 다른 방식으로도 활용할 수 있다는 것을 알고 넘어가자.!