美文网首页
Node之中间件

Node之中间件

作者: 27亿光年中的小小尘埃 | 来源:发表于2020-02-14 11:36 被阅读0次

    中间件概述

    Express框架中一个非常重要的概念——中间件。在Express框架中,允许通过中间件的使用来调用各种第三方类库,这让我们的开发工作变得更为方便,也使得我们可以开发出各种更为强大的应用程序。

    一个中间件是一个用于处理客户端请求的函数。一个HTTP服务器中可能会使用到各种中间件。当接收到一个客户端请求时,首先将该请求提交给第一个中间件函数,每一个中间件函数内部封装一个next回调函数,在一个中间件函数内部可以判断是否调用next回调函数来处理该客户端请求。一个最简单的中间件的书写方法如下所示。

    function middleware(req,res,next){next()}
    

    在Express框架中,使用应用程序实例对象的use方法来调用一个中间件,该方法的使用方式如下所示。

    app.use([path],function)
    

    在use方法中,使用两个参数,其中path参数为可选参数,function参数为必须指定参数。path参数值为一个字符串,用于指定何种路径应用中间件,默认参数值为“/”。function参数值为一个函数,用于指定我们所要调用的中间件函数。

    我们定义服务器端所要返回的状态码、响应头及返回页面中的<head>标签中的内容。

    var setHeader = function() {
        return function(req, res, next) {
            res.statusCode=200;
            res.header={'Content-Type': 'text/html'};
            res.head='<head><meta charset="utf-8"/></head>';
            next();
        };
    };
    exports.setHeader = setHeader;
    

    调用自定义中间件

    var express = require('express');
    var middleware = require('./middleware');
    var app = express();
    app.use(middleware.setHeader());
    app.get('/', function(req,res) {
        res.writeHead(res.statusCode,res.header);
        res.write(res.head);
        res.end('
        你好');
    });
    app.listen(1337, "127.0.0.1");
    

    use方法中的path参数使用示例

    var express = require('express');
    var middleware = require('./middleware');
    var app = express();
    app.use('/static',middleware.setHeader());
    app.get('/*', function(req,res) {
        if(res.head){
            res.writeHead(res.statusCode,res.header);
            res.write(res.head);
            res.write('你好');
        }
        res.end();
    });
    app.listen(1337, "127.0.0.1");
    

    在应用程序实例对象的get方法、post方法、put方法、delete方法或all方法中,均可使用一个或多个中间件参数。这些方法的完整使用方式如下所示。

    app.get(path,[callback...],callback) //使用get方法
    app.post(path,[callback...],callback) //使用post方法
    app.put(path,[callback...],callback) //使用put方法
    app.delete(path,[callback...],callback) //使用delete方法
    app.all(path,[callback...],callback) //使用all方法
    
    

    在这些方法的path参数值与callback参数值中间,可以使用一个或多个参数,每一个参数值均为一个中间件函数。在使用多个中间件函数时,当在前一个中间件函数中调用next方法时,调用后一个中间件函数,当在最后一个中间件函数中调用next方法时,调用最后一个callback参数值回调函数。

    使用实例:

    var express = require('express');
    var middleware = require('./middleware');
    var app = express();
    app.get('/',middleware.setHeader(),function(req,res) {
        res.writeHead(res.statusCode,res.header);
        res.write(res.head);
        res.end('你好');
    });
    app.listen(1337, "127.0.0.1");
    
    

    一般大型框架中都内置中间件,具体请查看框架中的具体方法

    相关文章

      网友评论

          本文标题:Node之中间件

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