익스프레스 미들웨어

미들웨어는 요청-응답 수명 주기에서 매우 중요한 역할을 합니다. 미들웨어는 서버와 응답 사이에 배치됩니다.

미들웨어의 주요 역할은 요청이 Route Handler에 수신되기 전에 중간에서 요청을 처리하는 것입니다. 처리는 다음과 같은 다양한 것들과 관련될 수 있습니다.
  • 서버로 들어오는 모든 요청을 기록합니다(Morgan은 이 용도로 사용되는 매우 인기 있는 미들웨어입니다)
  • 요청에 auth token가 있는지 확인하려면(Passcode JS는 이 용도로 널리 사용되는 미들웨어임)

  • 이들은 기본적으로 애플리케이션의 요청-응답 수명 주기에서 요청 객체, 응답 객체 및 다음 미들웨어 기능에 액세스할 수 있는 기능입니다(다음 미들웨어 기능은 일반적으로 next라는 변수로 표시됩니다).

    현재 미들웨어가 요청-응답 주기를 종료하지 않으면 next()를 호출하여 다음 미들웨어 함수에 제어를 전달해야 합니다. 그렇지 않으면 요청이 중단됩니다.

    미들웨어는 요청에서 프로그래머가 요구하는 다양한 요구 사항에 따라 다양한 유형이 될 수 있습니다.

    다음은 요구 사항에 따라 사용할 수 있는 몇 가지 미들웨어 유형입니다.
  • 애플리케이션 레벨 미들웨어
  • 라우터 수준 미들웨어
  • 오류 처리 미들웨어
  • 내장 미들웨어
  • 타사 미들웨어

  • 애플리케이션 수준 미들웨어의 예를 살펴보겠습니다.

    var express = require('express')
    var app = express()
    
    app.use(function (req, res, next){
    
     console.log('Time', Date.now())
     next()
    
    })
    
    


    위의 미들웨어는 앱이 요청을 받을 때마다 실행됩니다.

    경로에 미들레어 마운트:




    
    app.use("/products/:id", function(req,res,next){
     console.log('Request Type: ', req.method)
     next()
    
    })
    
    


    위의 미들웨어는 "products/:id"경로에서 요청을 받을 때마다 실행됩니다.

    특정 요청에 대한 경로에 마운트:




    app.get("/products/:id", function(req,res,next){
     res.send('product')
     next()
    
    })
    
    


    위 미들웨어는 "products/:id"경로에서 GET 요청을 받을 때마다 실행됩니다.

    next() 에 대해 더 자세히 살펴보겠습니다.



    next()는 요청을 미리 전파하는 데 사용됩니다. next()를 호출하는 것은 매우 중요합니다. 호출되지 않으면 기본적으로 미들웨어가 아닌 라우트 핸들러입니다.

    미들웨어에 대해 매우 중요한 것 중 하나는 프로그램의 순서 또는 미들웨어가 사용된 위치가 경로가 이를 효과적으로 사용하는 데 중요하다는 것입니다.

    예를 들어:

    
    app.use("/categories",categories)
    
    app.use(middleware)
    
    


    여기서 "/categories"경로의 요청은 미들웨어에 의해 처리되지 않으므로 제대로 작동하려면 미들웨어가 요청을 처리하기를 원하는 모든 경로의 맨 위에서 정의하고 사용해야 합니다.

    따라서 미들웨어는 DRY 구현에 많은 도움을 제공하고 서버의 부하를 줄이기 위해 더 큰 이점으로 사용될 수 있습니다.

    좋은 웹페이지 즐겨찾기