
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、nodejs之express的中間件express中間件分成三種內(nèi)置中間件static自定義中間件第三方中間件(body-parser)(攔截器)全局自定義中間件在哀求接口時有幾個接口都要驗證傳來的內(nèi)容是否存在或者是否正確不行能每個接口都寫一段驗證,所以這一段驗證可以提取出來,通過中間件實現(xiàn)constexpress=require("express");constapp=express();/test1接口app.get("/test1",(req,res)=>res.send("test1ok&a
2、mp;quot;)/test2接口app.get("/test2",(req,res)=>res.send("test2ok")/開啟服務(wù)器app.listen(2000,()=>console.log(&39;開啟在2000端口&39;);)現(xiàn)在要做的是在哀求test1和test2的時候看哀求中有沒有帶上需要的字段tokenapp.use()第一種中間件可以說是攔截器第一個參數(shù)是路徑其次個參數(shù)是回調(diào)函數(shù)回調(diào)函數(shù)中有reqresnextconstexpress=require("
3、;express");constapp=express();app.use("/",(req,res,next)=>console.log("中間件")/test1接口app.get("/test1",(req,res)=>console.log(&39;test1&39;);res.send("test1ok")/test2接口app.get("/test2",(req
4、,res)=>console.log(&39;test2&39;);res.send("test2ok")/開啟服務(wù)器app.listen(2000,()=>console.log(&39;開啟在2000端口&39;);)現(xiàn)在在掃瞄器中哀求/test1沒有響應(yīng),在終端中打印出來這個中間件的作用在于哀求/開始的路徑時優(yōu)先走中間件的回調(diào)函數(shù)中間件里的next()表示是否繼續(xù)往下執(zhí)行,有next()就繼續(xù)往下走,沒有next()就不往下走constexpress=require("express&
5、;quot;);constapp=express();app.use("/",(req,res,next)=>console.log("中間件")next()/是否繼續(xù)往下執(zhí)行)/test1接口app.get("/test1",(req,res)=>console.log(&39;test1&39;);res.send("test1ok")/test2接口app.get("/test2",
6、(req,res)=>console.log(&39;test2&39;);res.send("test2ok")/開啟服務(wù)器app.listen(2000,()=>console.log(&39;開啟在2000端口&39;);)頁面中終端打印容易來說在來到/test1接口之前有個攔截器,這個攔截器中的路徑是/,全部的接口都先走這個攔截器,在這個攔截器里做規(guī)律處理,允許它繼續(xù)往下走就加next(),不允許往下走就不用加next(),因此驗證上文提到的token,就可以在中間件里舉行constexpress=requ
7、ire("express");constapp=express();app.use("/",(req,res,next)=>console.log("中間件")lettoken=req.query;if(token)next()/是否繼續(xù)往下執(zhí)行elseres.send("缺少token")/test1接口app.get("/test1",(req,res)=>console.log(&39;te
8、st1&39;);res.send(test1token為$req.query.token)/test2接口app.get("/test2",(req,res)=>console.log(&39;test2&39;);res.send(test2token為$req.query.token)/開啟服務(wù)器app.listen(2000,()=>console.log(&39;開啟在2000端口&39;);)掃瞄器中拜訪/test1不帶token字段現(xiàn)在帶上token字段拜訪/test2這就實現(xiàn)了通過中間件做全
9、局攔截,這種中間件屬于自定義攔截器.假如app.use()的第一個參數(shù)是/表示路徑,則第一個參數(shù)可以不寫,如下app.use("/",(req,res,next)=>next()/是否繼續(xù)往下執(zhí)行)等同于app.use(req,res,next)=>next()/是否繼續(xù)往下執(zhí)行)這也可以說為什么body-parser是一個中間件constbodyparser=require("body-parser");app.use(bodyparser.urlencoded(extended:false)app.use(
10、bodyparser.json()在用法bodyparser.json()的時候也是在app.use()辦法里跟了一個函數(shù)。中間件的用法在app.use()里可以加上一個回調(diào)函數(shù),在回調(diào)函數(shù)里做一些處理需要注重的是在合適的時機用法next()繼續(xù)執(zhí)行后面的操作為什么說這一種是全局的,由于全部的接口都走這里接下來看局部中間件局部中間件第一個參數(shù)還是路徑其次個參數(shù)是一個function第三個參數(shù)還是functionconstexpress=require("express");constapp=express();app.get("/demo&
11、amp;quot;,(req,res,next)=>console.log(&39;fun1&39;);,(req,res)=>console.log(&39;fun2&39;);)/開啟服務(wù)器app.listen(2000,()=>console.log(&39;開啟在2000端口&39;);)現(xiàn)在哀求/demo接口掃瞄器中沒有響應(yīng)由于第一個回調(diào)函數(shù)里沒有next()不會走到其次個回調(diào)函數(shù)里終端打印在第一個回調(diào)函數(shù)中加上next()看看constexpress=require("express&quo
12、t;);constapp=express();app.get("/demo",(req,res,next)=>console.log(&39;fun1&39;);next(),(req,res)=>res.send("fun2")console.log(&39;fun2&39;);)/開啟服務(wù)器app.listen(2000,()=>console.log(&39;開啟在2000端口&39;);)掃瞄器中拜訪/demo終端打印這種叫局部中間件,局部中間件是在
13、哪個接口里寫就只對哪個接口實用,局部中間件可以寫很多個只要在合適的地方用法next()就可以一個接一個的往下執(zhí)行,普通狀況下用法局部中間件最多用法一兩個就夠了用法多個局部中間件代碼結(jié)構(gòu)如下app.get("/test",fun1,fun2,fun3,fun4,fun5.)內(nèi)置中間件static又叫靜態(tài)資源名目類似于apache的靜態(tài)名目指定名目后把網(wǎng)頁文件放進去挺直可以拜訪到在項目名目新建一個文件夾public任憑起名,用作靜態(tài)資源名目只要是中間件都是用app.use()辦法app.use(express.static("./public&
14、amp;quot;)在public名目下新建一個index.html文件寫上內(nèi)容掃瞄器拜訪/index.html這樣是挺直拜訪靜態(tài)名目,假如在public名目下還有名目,在掃瞄器中地址欄/后輸入public下的名目的文件也可以拜訪到還有另一種寫法app.use("/",express.static("./public")拜訪的地址不變依舊可以打開頁面,由于路徑名字是/時第一個參數(shù)可以省去假如想定義用戶輸入的路徑就改第一個參數(shù)app.use("/public/test/",express.static("./p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- pvc地板購銷合同范例
- 代辦購房合同范例
- 分居合同范例
- 目視化施工方案
- 分銷電纜合同范例
- M公司員工培訓(xùn)管理優(yōu)化研究
- 零信任框架下的電動汽車智能充電的訪問控制研究
- 保管采購合同范例
- 眾籌開店合同范例
- 別墅裝飾裝修合同范例
- 成都市2024屆高中畢業(yè)班第二次診斷性監(jiān)測-2024年全國各地高考語文模擬卷作文導(dǎo)寫講練
- 醫(yī)保統(tǒng)計信息管理制度
- 達格列凈治療心衰機制
- 2024年保育員(初級)證考試題庫及答案
- 40篇英語短文搞定3500個單詞 正文
- 2024年度《冠心病》全套課件(完整版)
- 正面吊安全操作規(guī)程培訓(xùn)
- 2023年臺州市中考科學(xué)(正卷)和答案
- 經(jīng)典美味的宮保雞丁
- 孤獨癥兒童心智解讀能力
- 2023-2024學(xué)年人教版(2019)必修 第三冊Unit 2 Morals and Virtues Reading and Thinking 課件(22張)
評論
0/150
提交評論