>  기사  >  웹 프론트엔드  >  Express4.x 미들웨어 기능 소개(코드 예)

Express4.x 미들웨어 기능 소개(코드 예)

不言
不言앞으로
2019-03-16 10:57:242198검색

이 기사는 Express4.x 미들웨어 기능(코드 예제)을 소개합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

Express 애플리케이션은 기본적으로 파이프라인에서 실행되는 일련의 미들웨어 함수 호출입니다. 물을 운반하는 실제 파이프를 상상할 수 있습니다. 물은 한쪽 끝에서 펌핑된 다음 목적지에 도달하기 전에 다양한 게이지와 밸브를 통과합니다. 이 비유에서 중요한 부분은 순서 문제입니다. 압력 게이지를 밸브 앞과 뒤에 놓으면 효과가 달라집니다. 마찬가지로, 물에 무언가를 주입하는 밸브가 있는 경우 밸브의 "하류" 모든 항목에는 새로 추가된 성분이 포함됩니다. Express 프로그램에서 미들웨어는 app.use를 호출하여 파이프라인에 삽입됩니다.

Express 4.0 이전에는 라우터를 명시적으로 연결해야 했기 때문에 이 파이프라인이 약간 복잡했습니다. 라우터에 연결하는 위치에 따라 라우팅 순서가 잘못될 수 있으며, 이로 인해 미들웨어와 경로 핸들러를 혼합할 때 파이프라인 순서가 더욱 명확하지 않게 됩니다. Express 4.0에서는 미들웨어와 경로 처리기가 연결된 순서대로 호출되므로 순서가 더 명확해집니다.

라우트 프로세서(app.get, app.post 등, 통칭하여 app.VERB라고도 함)는 특정 HTTP 동사(GET, POST 등)만 처리하는 미들웨어로 생각할 수 있습니다. 마찬가지로 미들웨어는 모든 HTTP 동사를 처리할 수 있는 경로 프로세서로 생각할 수도 있습니다(기본적으로 모든 HTTP 동사를 처리할 수 있는 app.all과 동일합니다. PURGE와 같은 특수 동사에는 미묘한 차이가 있지만 일반적인 경우에는 술어에 관한 한 효과는 동일합니다).

경로 프로세서의 첫 번째 매개변수는 경로여야 합니다. 경로가 모든 경로와 일치하도록 하려면 /*를 사용하면 됩니다. 미들웨어도 경로를 첫 번째 매개변수로 사용할 수 있지만 선택 사항입니다(이 매개변수를 생략하면 /*가 지정된 것처럼 모든 경로와 일치합니다)

라우트 프로세서 및 미들웨어의 매개변수에는 콜백 함수가 있습니다. 2개, 3개 또는 4개의 매개변수를 사용합니다(기술적으로는 0개 또는 1개의 매개변수를 가질 수도 있지만 이러한 형식은 의미가 없습니다). 매개변수가 2개 또는 3개 있는 경우 처음 두 매개변수는 요청 및 응답 개체이고 세 번째 매개변수는 다음 함수입니다. 매개변수가 4개 있으면 오류 처리 미들웨어가 되며, 첫 번째 매개변수가 오류 객체가 되고, 그 뒤를 요청, 응답, 다음 객체가 됩니다. next()가 호출되지 않으면 파이프라인이 종료되고 프로세서나 미들웨어에서 더 이상 처리가 이루어지지 않습니다.

next()를 호출하지 않으면 클라이언트에 응답을 보내야 합니다(res.send, res.json, res.render 등). 그렇지 않으면 클라이언트가 중단되고 결국 시간 초과가 발생합니다. next()가 호출되면 일반적으로 클라이언트에 응답을 보내는 것은 적절하지 않습니다. 이를 보내면 파이프라인의 후속 미들웨어 또는 경로 핸들러는 계속 실행되지만 이들이 보내는 모든 응답은 무시됩니다.

var express = require('express')
var app = express()

var requestTime = function (req, res, next) {
  req.requestTime = Date.now()
  console.log(req.requestTime );
  next()
}
var requestUser = function (req, res, next) {
  console.log('welcome');
  next()
}

app.use(requestTime)
app.get('/', function (req, res) {
  console.log('//welcome');
  var responseText = 'Hello World!<br>'
  responseText += '<small>Requested at: ' + req.requestTime + '</small>'
  res.send(responseText)
})
app.use(requestUser)
app.listen(3000)

Access 127.0.0.1:3000 출력 시간 및 //welcome은 requestUser 미들웨어 코드 1552630945571//welcome

을 실행하지 않습니다.

위 내용은 Express4.x 미들웨어 기능 소개(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제