메서드와 주소가 있는 것을 라우터라 부르는데 이 라우터를 여러개 생성하다 보면 중복된 코드를 사용하는 경우가 생긴다. 이때 중복 사용되는 코드를 일일이 적지 않고 미들웨어를 사용하면 코드가 더 깔끔해 진다.
express는 미들웨어로 구성되 있고 app.use(미들웨어)의 형식으로 사용된다.
미들웨어는 req, res, next가 매개변수인 함수를 위미하며 위에서 아래로 실행된다. 미들웨어는, 라우터는 조건이 일치하는 것을 찾아 실해이하기 때문에 범위가 작은거 부터 범위가 큰 순으로 코드를 작성해야 한다.
미들웨어는 기본적으로 조건이 충족되면 실행하고 다음으로 넘어가지 않는다. 따라서 미들웨어 맨 마지막에 next();를 추가해야 다음 미들웨어로 넘어간다. 또 한 try{....}catch(err}{next(err)};를 하게 되면 에러 발생 시 에러처리 미들웨어로 넘어간다.
에러처리 미들웨어는 err, req, res, next 이 4개의 인자르 가지고 있다. 에러처리 미들웨어는 반드시 이 4가인 인자를 모두 텋어줘야 에러처리 미들웨어로 인지된다.
next('error');를 사용해 일부러 에러를 내보았다. 시작시 app.use()d에 있는 콜백이 실행되고 에러처리 미들웨어에 있는 코드가 실핸된다.
express의 경우 디폴트 상태코드가 200이다. 다른 상태코드를 원하는 경우 res.status()로 변경할 수 있다.