中间件
中间件的作用主要是做中间代理操作,中间件就是在做接收到请求和发送响应中间的一系列操作。express是一个路由和中间件的web框架,Express 应用程序基本上是一系列中间件函数的调用。
一、中间件函数作用
执行任何代码。
对请求和响应对象进行更改。
结束请求/响应循环。
调用堆栈中的下一个中间件函数。
二、中间件的分类
中间件也分为应用层中间件、路由中间件、内置中间件、错误处理中间件和第三方中间件。
1.应用层中间件
应用级中间键绑定到app对象使用app.use和app.method()需要处理http请求的方法,例如GET、PUT、POST,将之前的get或者post替换为use就行。
例如下面实例:
const express=require("express");
var app=express();
//匹配路由之前的操作
app.use(function(req,res){
console.log("访问之前");
});
app.get("/",function(req,res){
res.send("首页");
});
app.listen(3000);
这时我们会发现http://localhost:3000/地址一直在加载,但命令行里显示了“访问之前”,说明程序并不会同步执行,如果使用next来是路由继续向下匹配,那么就能又得到主页数据了:
const express=require("express")
var app=express();
//匹配路由之前的操作
app.use(function(req,res,next){
console.log("访问之前");
next();
});
app.get("/",function(req,res){
res.send("首页");
});
app.listen(3000);
2.路由中间件
路由级中间件和应用级中间件类似,需要调用express.Router();
匹配路由时,我们使用 router.use() 或 router.VERB() ,路由中间件结合多次callback可用于用户登录及用户状态检测。
const express = require("express");
var app = express();
var router=express.Router();
router.use("/",function(req,res,next){
console.log("匹配前");
next();
});
router.use("/user",function(req,res,next){
console.log("匹配地址:",req.originalUrl);
next();
},function(req,res){
res.send("用户登录");
});
app.use("/",router);
app.listen(3000);
3.错误处理中间件
指当我们匹配不到路由时所执行的操作。错误处理中间件和其他中间件基本一样,只不过其需要开发者提供4个自变量参数。
app.use((err, req, res, next) => {
res.sendStatus(err.httpStatusCode).json(err);
});
4.内置中间件
从版本4.x开始,Express不再依赖Content,也就是说Express以前的内置中间件作为单独模块,express.static是Express的唯一内置中间件。
express.static(root, [options]);
5.第三方中间件
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
如果感觉有帮助请留下一个宝贵的赞,或者给小编一个赞赏!!!
网友评论