成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Express 文檔(編寫中間件)

nanchen2251 / 696人閱讀

摘要:編寫中間件中間件函數(shù)是可以訪問請(qǐng)求對(duì)象響應(yīng)對(duì)象以及應(yīng)用程序請(qǐng)求響應(yīng)周期中的函數(shù)的函數(shù),函數(shù)是路由器中的一個(gè)函數(shù),當(dāng)被調(diào)用時(shí),它會(huì)在當(dāng)前中間件之后執(zhí)行中間件。結(jié)束請(qǐng)求響應(yīng)周期。此外,根路徑路由的回調(diào)函數(shù)使用中間件函數(shù)添加到請(qǐng)求對(duì)象的屬性。

編寫中間件

中間件函數(shù)是可以訪問請(qǐng)求對(duì)象(req)、響應(yīng)對(duì)象(res)以及應(yīng)用程序請(qǐng)求—響應(yīng)周期中的next函數(shù)的函數(shù),next函數(shù)是Express路由器中的一個(gè)函數(shù),當(dāng)被調(diào)用時(shí),它會(huì)在當(dāng)前中間件之后執(zhí)行中間件。

中間件函數(shù)可以執(zhí)行以下任務(wù):

執(zhí)行任何代碼。

更改請(qǐng)求和響應(yīng)對(duì)象。

結(jié)束請(qǐng)求—響應(yīng)周期。

調(diào)用堆棧中的下一個(gè)中間件。

如果當(dāng)前的中間件函數(shù)沒有結(jié)束請(qǐng)求—響應(yīng)周期,它必須調(diào)用next()將控制權(quán)傳遞給下一個(gè)中間件函數(shù),否則,請(qǐng)求將被掛起。

下圖顯示了中間件函數(shù)調(diào)用的元素:

示例

以下是一個(gè)簡(jiǎn)單的“Hello World” Express應(yīng)用程序示例,本文的其余部分將為應(yīng)用程序定義和添加兩個(gè)中間件函數(shù):一個(gè)名為myLogger,用于打印簡(jiǎn)單的日志消息,另一個(gè)名為requestTime,用于顯示HTTP請(qǐng)求的時(shí)間戳。

var express = require("express")
var app = express()

app.get("/", function (req, res) {
  res.send("Hello World!")
})

app.listen(3000)
中間件函數(shù)myLogger

這是一個(gè)名為“myLogger”的中間件函數(shù)的簡(jiǎn)單示例,當(dāng)對(duì)應(yīng)用程序的請(qǐng)求通過時(shí),此函數(shù)只打印“LOGGED”,中間件函數(shù)被分配給名為myLogger的變量。

var myLogger = function (req, res, next) {
  console.log("LOGGED")
  next()
}
注意上面的調(diào)用next(),調(diào)用此函數(shù)會(huì)調(diào)用應(yīng)用程序中的下一個(gè)中間件函數(shù),next()函數(shù)不是Node.js或Express API的一部分,而是傳遞給中間件函數(shù)的第三個(gè)參數(shù)。next()函數(shù)可以命名為任何,但按照慣例,它總是被命名為“next”,為避免混淆,請(qǐng)始終使用此約定。

要加載中間件函數(shù),請(qǐng)調(diào)用app.use(),指定中間件函數(shù),例如,以下代碼在到根路徑(/)的路由之前加載myLogger中間件函數(shù)。

var express = require("express")
var app = express()

var myLogger = function (req, res, next) {
  console.log("LOGGED")
  next()
}

app.use(myLogger)

app.get("/", function (req, res) {
  res.send("Hello World!")
})

app.listen(3000)

每次應(yīng)用程序收到請(qǐng)求時(shí),它都會(huì)向終端輸出消息“LOGGED”。

中間件加載的順序很重要:首先加載的中間件函數(shù)也會(huì)先執(zhí)行。

如果myLogger在到達(dá)根路徑的路由之后加載,則請(qǐng)求永遠(yuǎn)不會(huì)到達(dá)它,并且應(yīng)用程序不會(huì)打印“LOGGED”,因?yàn)楦窂降穆酚商幚沓绦驎?huì)終止請(qǐng)求—響應(yīng)周期。

中間件函數(shù)myLogger只是打印一條消息,然后通過調(diào)用next()函數(shù)將請(qǐng)求傳遞給堆棧中的下一個(gè)中間件函數(shù)。

中間件函數(shù)requestTime

接下來,我們將創(chuàng)建一個(gè)名為“requestTime”的中間件函數(shù),并將一個(gè)名為requestTime的屬性添加到請(qǐng)求對(duì)象中。

var requestTime = function (req, res, next) {
  req.requestTime = Date.now()
  next()
}

該應(yīng)用程序現(xiàn)在使用requestTime中間件函數(shù),此外,根路徑路由的回調(diào)函數(shù)使用中間件函數(shù)添加到req(請(qǐng)求對(duì)象)的屬性。此外,根路徑路由的回調(diào)函數(shù)使用中間件函數(shù)添加到req(請(qǐng)求對(duì)象)的屬性。

var express = require("express")
var app = express()

var requestTime = function (req, res, next) {
  req.requestTime = Date.now()
  next()
}

app.use(requestTime)

app.get("/", function (req, res) {
  var responseText = "Hello World!
" responseText += "Requested at: " + req.requestTime + "" res.send(responseText) }) app.listen(3000)

當(dāng)你向應(yīng)用程序的根目錄發(fā)出請(qǐng)求時(shí),應(yīng)用程序現(xiàn)在會(huì)在瀏覽器中顯示你的請(qǐng)求的時(shí)間戳。

因?yàn)槟憧梢栽L問請(qǐng)求對(duì)象、響應(yīng)對(duì)象、堆棧中的下一個(gè)中間件函數(shù)以及整個(gè)Node.js API,所以中間件函數(shù)的可能性是無窮無盡的。

有關(guān)Express中間件的更多信息,請(qǐng)參閱:使用Express中間件。

可配置的中間件

如果你需要中間件可配置,請(qǐng)導(dǎo)出一個(gè)接受選項(xiàng)對(duì)象或其他參數(shù)的函數(shù),然后根據(jù)輸入?yún)?shù)返回中間件實(shí)現(xiàn)。

文件:my-middleware.js

module.exports = function(options) {
  return function(req, res, next) {
    // Implement the middleware function based on the options object
    next()
  }
}

現(xiàn)在可以使用中間件,如下所示。

var mw = require("./my-middleware.js")

app.use(mw({ option1: "1", option2: "2" }))

有關(guān)可配置中間件的示例,請(qǐng)參閱cookie-session和compression。

上一篇:路由 下一篇:使用中間件

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/100451.html

相關(guān)文章

  • Express 文檔(錯(cuò)誤處理)

    摘要:捕捉錯(cuò)誤確保捕獲運(yùn)行路由處理程序和中間件時(shí)發(fā)生的所有錯(cuò)誤非常重要。對(duì)和的調(diào)用表明當(dāng)前處理程序已完成并處于什么狀態(tài),將跳過鏈中的所有剩余處理程序,除了那些設(shè)置為處理上述錯(cuò)誤的處理程序。 錯(cuò)誤處理 錯(cuò)誤處理是指Express如何捕獲和處理同步和異步發(fā)生的錯(cuò)誤,Express附帶一個(gè)默認(rèn)的錯(cuò)誤處理程序,因此你無需編寫自己的錯(cuò)誤處理程序即可開始使用。 捕捉錯(cuò)誤 確保Express捕獲運(yùn)行路由處...

    mtunique 評(píng)論0 收藏0
  • Koa v2.x 中文文檔 Koa 對(duì)比 Express

    摘要:使用承諾和異步功能來擺脫回調(diào)地獄的應(yīng)用程序,并簡(jiǎn)化錯(cuò)誤處理。它暴露了自己的和對(duì)象,而不是的和對(duì)象。因此,可被視為的模塊的抽象,其中是的應(yīng)用程序框架。這使得中間件對(duì)于整個(gè)堆棧而言不僅僅是最終應(yīng)用程序代碼,而且更易于書寫,并更不容易出錯(cuò)。 Koa 與 Express 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新...

    summerpxy 評(píng)論0 收藏0
  • 從零開始編寫React-Express單頁博客應(yīng)用(學(xué)習(xí)總結(jié))

    摘要:?jiǎn)雾摬┛蛻?yīng)用編寫總結(jié)很久之前就想寫一個(gè)博客應(yīng)用在一開始想要直接用和模板直接寫但是暑假一開始的時(shí)候不小心入了的坑所以就一不做二不休直接用寫那既然用了不寫個(gè)單頁應(yīng)用也過意不去了不前前后后寫了將近兩個(gè)星期現(xiàn)在看來這其實(shí)是一個(gè)很容易的應(yīng)用但是鑒于 React-Express單頁博客應(yīng)用編寫總結(jié) 很久之前就想寫一個(gè)博客應(yīng)用.在一開始想要直接用express和ejs模板直接寫, 但是暑假一開始的時(shí)...

    Jioby 評(píng)論0 收藏0
  • Express 文檔(目錄)

    摘要:文檔基于的快速開放極簡(jiǎn)主義的框架,是一個(gè)最小且靈活的應(yīng)用程序框架,為和移動(dòng)應(yīng)用程序提供了一組強(qiáng)大的功能。借助無數(shù)的實(shí)用程序方法和中間件,你可以快速輕松地創(chuàng)建強(qiáng)大的。提供了一層輕薄的基本應(yīng)用程序功能,而不會(huì)隱藏你熟悉和喜愛的功能。 Express 文檔 基于Node.js的快速、開放、極簡(jiǎn)主義的Web框架,Express是一個(gè)最小且靈活的Node.js Web應(yīng)用程序框架,為Web和移動(dòng)...

    馬忠志 評(píng)論0 收藏0
  • Koa v2.x 中文文檔 常見問題

    摘要:常見問題此系列文章的應(yīng)用示例已發(fā)布于可以幫助改進(jìn)或關(guān)注更新歡迎替代它更像是,但是很多的好東西被轉(zhuǎn)移到的中間件級(jí)別,以幫助形成更強(qiáng)大的基礎(chǔ)。這使得中間件對(duì)于整個(gè)堆棧而言不僅僅是最終應(yīng)用程序代碼,而且更易于書寫,并更不容易出錯(cuò)。 常見問題 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: koa-docs-Zh-CN. 可以 Fork 幫助改進(jìn)或 Star 關(guān)注更新. 歡迎 Star. Koa...

    Paul_King 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<