美文网首页
Express系列(四)

Express系列(四)

作者: 笑红尘123 | 来源:发表于2019-12-04 23:15 被阅读0次

    中间件

    中间件的作用主要是做中间代理操作,中间件就是在做接收到请求和发送响应中间的一系列操作。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');
    

    如果感觉有帮助请留下一个宝贵的赞,或者给小编一个赞赏!!!

    相关文章

      网友评论

          本文标题:Express系列(四)

          本文链接:https://www.haomeiwen.com/subject/ljergctx.html