Middleware 미들웨어란

  • localhost:3000에 접속하면 style.css 파일이 404 error가 뜨는 경우가 있다. style.css 같은 static 파일들을 처리하는 방법을 모르기 때문에 express에게 어떻게 처리할지 알려줘야한다.

  • express의 기본 미들웨어를 사용하여 static 파일을 처리할 수 있음

      app.use('/assets', express.static('assets'));
    • /assets 으로 들어오는 요청에 assets 폴더를 map하여 전달해줌
  • 미들웨어란 쉽게 말해 요청과 응답 사이에 돌아가는 코드를 말한다.

  • 요청과 응답 사이에 static 파일(stylesheet, images..)을 처리할 수 있는 코드를 넣어주면 제대로 style.css를 전달해줄 수 있음

    app.get('/', function(req, res){ // '/' 는 request
    
    console.log('middleware'); // request와 response 중간에 오는 코드 무엇이든지 미들웨어라 부름
      res.render('Hi'); // response
    })
    // 미들 웨어 사용
    app.use('/assets',function(req,res,next){
    ...
    })
  • /assets 으로 오는 요청에 미들웨어 사용하겠다

  • next 파라미터는 해당 미들웨어가 끝나면 다음 미들웨어를 부름, 해당 라우트 요청에 여러 개의 미들웨어가 있을 수 있으니까.

  • 익스프레스의 핵심 구조가 미들웨어

  • 미들웨어와 라우팅 함수는 선언된 순서대로 동작한다. 따라서 미들웨어의 순서가 중요할 때가 있음. 예를 들어 세션 미들웨어가 쿠키 미들웨어에 따라 달라지면 쿠키 핸들러가 먼저와야한다.

    👍🏻 참고 자료: Node JS Tutorial for Beginners #28 - Middleware & Static Files

미들웨어 : morgan

  • 로그의 기록을 남긴다.
  • 클라이언트의 HTTP 요청 정보를 로깅한다. 서버로 어떤 요청 (GET, POST ) 이 들어왔는지 알려준다.

미들웨어 : cookieParser 🍪

  • 접속한 클라이언트의 쿠키 정보에 접근하기 위한 모듈

⛑ 미들웨어 : helmet

HTTP 헤더를 적절히 설정하여 잘 알려진 웹 취약성으로부터 앱을 보호

  • 어떤 취약점이 있지 ? [웹 취약점]
  • HTTP response header를 설정하는 14개의 작은 미들웨어로 구성되어 있음

미들웨어 : bodyParser

  • 클라이언트의 HTTP 요청 중 POST 요청의 바디 데이터에 접근하기 위한 모듈

👍🏻 참고 자료: Express.js 시작하기