当前位置: 首页 > 后端技术 > Node.js

中间件-middleware-

时间:2023-04-03 20:21:54 Node.js

什么是中间件?中间件是处理HTTP请求以完成各种特定任务的功能,例如检查用户是否登录、分析数据以及在最终将数据发送给用户之前需要完成的其他任务。它最大的特点是一个中间件处理完后,可以将相应的数据传递给下一个中间件。一个不做任何操作,只传递request对象的中间件,大致是这样的:如果带参数,则表示抛出错误,参数为错误文本。functionMiddleware(request,response,next){next('Anerroroccurred!');}抛出错误后,后面的中间件才会执行,直到找到错误处理函数。如果不调用next方法,后面注册的函数将不会执行。all函数的基本用法与get函数不同。app.all()函数可以匹配所有的HTTP动词,也就是说可以过滤所有路径的请求。如果使用all函数来定义中间件,则意味着所有的请求都必须先通过这个中间件。格式:app.all(path,function(request,response));如下所示,我们使用all函数在请求前设置响应头属性。varexpress=require("快递");varapp=express();app.all("*",function(request,response,next){response.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});//设置响应头属性值next();});app.get("/",function(request,response){response.end("欢迎来到首页!");});app.get("/about",function(request,response){response.end("欢迎来到关于页面!");});app.get("*",function(request,response){response.end("404-Notfound!");});app.listen(80);上述代码参数中的“*”表示对所有路径都有效。这个方法在给定一个特定的前缀路径或者任何路径上处理的时候会特别有用,不管我们请求什么路径,它都会事先经过all函数。use的基本用法1use是express调用中间件的方法,返回一个函数。格式:app.use([path],function(request,response,next){});可选参数路径默认为“/”。app.use(express.static(path.join(__dirname,'public')));如上,我们使用use函数调用express中间件设置静态文件目录的访问路径。如何连续调用两个中间件,如下例所示:varexpress=require('express');varapp=express();app.use(function(request,response,next){console.log("method:"+request.method+"===="+"url:"+request.url);next();});app.use(function(request,response){response.writeHead(200,{"Content-Type":"text/html;charset=utf-8"});response.end('例子:调用两个中间件在一个排');});app.listen(80);use基本用法2use方法不仅可以调用中间件还可以根据请求的URL返回不同的网页内容,如下例所示:varexpress=require("express");varapp=express();app.use(function(request,response,next){if(request.url=="/"){response.send("欢迎来到主页!");}else{next();}});app.use(function(request,response,next){if(request.url=="/about"){response.send("欢迎来到关于页面!");}else{next();}});app.use(function(request,response){response.send("404error!");});app.listen(80);上述代码通过request.url属性判断请求的URL,从而返回不同的内容。原文链接说明