Middleware

EBinY·2021년 10월 26일
0

Middleware

  • express는 middleware가 아님, library중 하나, 그 작업 중간 중간에 들어가서 작업을 돕는 작은 프로그램을 middleware라고 함
  • request에 필요한 기능을 더하거나, 에러를 걷어내는 작업을 쉽게 구현하도록 돕는다
    • cors 헤더를 자동 적용
    • body를 text, json 등을 알아서 잘 해석해준다
    • 에러 처리와 디버깅에 용이함 (모든 요청에 대해 url이나 method를 확인해준다)
    • 권한에 따른 처리가 가능 (헤더에 있는 인증 정보를 통하여 가능함)
    • prefix(접두어)가 중복될 때, 라우팅을 편하게 되도록 할수 있음
  • 미들웨어를 실제 적용할 때

    • 모든 요청에 대해 url이나 메소드를 확인할 때
    • POST 요청 등에 포함된 body(payload)를 구조화할 때(쉽게 얻어내고자 할 때)
      • 순수 node.js로 HTTP body(payload)를 받을 때에는 Buffer를 조합해서 다소 복잡한 방식으로 body를 얻어냄
      • body-parser 미들웨어를 사용
        • express 4.16.0 버전에서는 bodyParser가 express generator에 내장
        • 설치 없이 'app.use(express.json());' 으로 사용 가능 (요청에서의 바디를 json으로)
        • res.json(req.body)로 응답 가능 (응답에서의 바디를 json으로)
        • app.use(express.json({strict: false})) : primitive data type도 parsing 하도록 설정하는 내용
    • 모든 요청/응답에 CORS 헤더를 붙여야 할 때
      • 순수 node.js 코드에 CORS 헤더를 붙이려면, 응답 객체의 writeHead 메소드 등을 이용, Access-Control-Allow-* 헤더를 매번 재정의, OPTIONS 메소드에 대한 라우팅도 따로 구현
      • cors 미들웨어를 사용
    • 요청 헤더에 사용자 인증 정보가 담겨있는지 확인할 때
  • 미들웨어는 일종의 컨베이어벨트 위에서의 서로 다른 공정

    • 1번 공정 -> 2번 공정 -> 3번 공정... = 결과 도출
    • next() : 다음 미들웨어의 실행을 요청하는 명령어 (다음 공정, 너 일해! 라는 의미)
  • node.js debugger: node --inspect-brk app.js

  • 라우팅: Routing, URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것

0개의 댓글

관련 채용 정보