nodejs之express的中间件_第1页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、nodejs之express的中间件express中间件分成三种内置中间件static自定义中间件第三方中间件(body-parser)(拦截器)全局自定义中间件在哀求接口时有几个接口都要验证传来的内容是否存在或者是否正确不行能每个接口都写一段验证,所以这一段验证可以提取出来,通过中间件实现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")/开启服务器app.listen(2000,()=>console.log(&39;开启在2000端口&39;);)现在要做的是在哀求test1和test2的时候看哀求中有没有带上需要的字段tokenapp.use()第一种中间件可以说是拦截器第一个参数是路径其次个参数是回调函数回调函数中有reqresnextconstexpress=require(&quot

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")/开启服务器app.listen(2000,()=>console.log(&39;开启在2000端口&39;);)现在在扫瞄器中哀求/test1没有响应,在终端中打印出来这个中间件的作用在于哀求/开始的路径时优先走中间件的回调函数中间件里的next()表示是否继续往下执行,有next()就继续往下走,没有next()就不往下走constexpress=require("express&

5、;quot;);constapp=express();app.use("/",(req,res,next)=>console.log("中间件")next()/是否继续往下执行)/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")/开启服务器app.listen(2000,()=>console.log(&39;开启在2000端口&39;);)页面中终端打印容易来说在来到/test1接口之前有个拦截器,这个拦截器中的路径是/,全部的接口都先走这个拦截器,在这个拦截器里做规律处理,允许它继续往下走就加next(),不允许往下走就不用加next(),因此验证上文提到的token,就可以在中间件里举行constexpress=requ

7、ire("express");constapp=express();app.use("/",(req,res,next)=>console.log("中间件")lettoken=req.query;if(token)next()/是否继续往下执行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)/开启服务器app.listen(2000,()=>console.log(&39;开启在2000端口&39;);)扫瞄器中拜访/test1不带token字段现在带上token字段拜访/test2这就实现了通过中间件做全

9、局拦截,这种中间件属于自定义拦截器.假如app.use()的第一个参数是/表示路径,则第一个参数可以不写,如下app.use("/",(req,res,next)=>next()/是否继续往下执行)等同于app.use(req,res,next)=>next()/是否继续往下执行)这也可以说为什么body-parser是一个中间件constbodyparser=require("body-parser");app.use(bodyparser.urlencoded(extended:false)app.use(

10、bodyparser.json()在用法bodyparser.json()的时候也是在app.use()办法里跟了一个函数。中间件的用法在app.use()里可以加上一个回调函数,在回调函数里做一些处理需要注重的是在合适的时机用法next()继续执行后面的操作为什么说这一种是全局的,由于全部的接口都走这里接下来看局部中间件局部中间件第一个参数还是路径其次个参数是一个function第三个参数还是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;);)/开启服务器app.listen(2000,()=>console.log(&39;开启在2000端口&39;);)现在哀求/demo接口扫瞄器中没有响应由于第一个回调函数里没有next()不会走到其次个回调函数里终端打印在第一个回调函数中加上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;);)/开启服务器app.listen(2000,()=>console.log(&39;开启在2000端口&39;);)扫瞄器中拜访/demo终端打印这种叫局部中间件,局部中间件是在

13、哪个接口里写就只对哪个接口实用,局部中间件可以写很多个只要在合适的地方用法next()就可以一个接一个的往下执行,普通状况下用法局部中间件最多用法一两个就够了用法多个局部中间件代码结构如下app.get("/test",fun1,fun2,fun3,fun4,fun5.)内置中间件static又叫静态资源名目类似于apache的静态名目指定名目后把网页文件放进去挺直可以拜访到在项目名目新建一个文件夹public任凭起名,用作静态资源名目只要是中间件都是用app.use()办法app.use(express.static("./public&

14、amp;quot;)在public名目下新建一个index.html文件写上内容扫瞄器拜访/index.html这样是挺直拜访静态名目,假如在public名目下还有名目,在扫瞄器中地址栏/后输入public下的名目的文件也可以拜访到还有另一种写法app.use("/",express.static("./public")拜访的地址不变依旧可以打开页面,由于路径名字是/时第一个参数可以省去假如想定义用户输入的路径就改第一个参数app.use("/public/test/",express.static("./p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论