Express의 사용자 정의 미들웨어 기능

2079 단어 javascriptexpressnode
그래서 이번 주에 Express를 사용할 때 사용자 정의 미들웨어 기능을 만드는 방법을 배웠습니다. 미들웨어 기능은 기본 경로보다 먼저 실행되며 모든 경로 호출에서 실행되거나 반대로 특정 경로를 호출할 때 실행될 수 있습니다.

Express의 미들웨어 기능은 다음 네 가지를 수행하는 데 사용됩니다.


  • 코드를 실행합니다.
  • 요청 및 응답 개체를 변경합니다.
  • 요청-응답 주기를 종료합니다.
  • 스택의 다음 미들웨어를 호출합니다.

  • Express는 사용할 수 있는 방대한 양의 미들웨어 기능을 가지고 있지만, 필요에 맞는 것을 찾을 수 없다면 직접 만드는 것이 너무 쉽습니다. 그러나 그 전에 Express에서 미들웨어 기능을 사용하는 방법을 간략하게 설명하고 싶습니다.

    미들웨어를 어떻게 사용합니까?



    익스프레스에서 미들웨어를 사용하는 세 가지 간단한 방법이 있습니다.

    app.use(cors())
    



    app.get('/', cors(), (req,res) =>{..Controller Function..})
    



    app.post('/',[cors(), json, morgan('dev')], (req,res) => {..Controller Function..})
    


    그래서 제가 위에서 제시한 세 가지 예를 설명하기 위해; app.use는 전달된 미들웨어 함수가 모든 요청 전에 실행되도록 허용합니다. 다음 예제에서는 경로 호출의 두 번째 인수로 미들웨어를 사용한 다음 경로의 컨트롤러보다 먼저 함수를 호출합니다. 마지막 예제는 컨트롤러보다 먼저 실행할 미들웨어 기능 목록을 전달합니다. 미들웨어 사용법에 대한 자세한 내용은 Express 미들웨어 페이지를 참조하세요.

    요점에 도달하기



    이제 미들웨어를 사용하는 방법을 알고 자신의 미들웨어를 구현하려고 합니다. 음, 좋은 소식은 배울 것이 단 하나, 다음 기능이라는 것입니다. 미들웨어 함수는 요청, 응답 및 다음의 세 가지 인수를 취합니다. 요청과 응답은 경로에서 사용하는 것과 동일하므로 여기서는 다루지 않겠습니다. 그러나 요청 시간이 초과되지 않도록 하려면 다음 매개변수가 매우 중요합니다. 미들웨어 함수의 끝에서 next()를 호출해야 합니다. 그렇지 않으면 서버가 함수를 떠나지 않을 것입니다. 이것을 보여주기 위해 저는 포스트 라우트로 전달될 데이터를 기록하는 간단한 미들웨어 기능을 만들었습니다.

    const logData = (req,res, next) => {
          console.log(`Data: ${req.body}`)
          next() 
    }
    app.post('/data', logData, (req,res) => {
        res.send({message: 'Got the data'})
    })
    


    무엇이든 알아차리세요. 미들웨어 함수는 특별한 것이 아니며, 말 그대로 next()로 끝나거나 위에 표시된 대로 app.use를 사용하여 express에 의해 호출되도록 설정되거나 경로에서 설정되는 한 원하는 모든 것이 될 수 있는 자바스크립트 함수입니다.
    그러니 멋진 미들웨어를 만드십시오. 나는 너희들이 이것을 가지고 만들 수 있는 것들을 보고 싶다.

    좋은 웹페이지 즐겨찾기