zoukankan      html  css  js  c++  java
  • express中间件

    中间件(Middleware)可以理解为一个对用户请求进行过滤和预处理的东西,它一般不会直接对客户端进行响应,而是将处理之后的结果传递下去。

    Express支持的中间件

    在express官网中可以看出express本身支持若干中间件:

    1. basicAuth:基本的身份认证功能,处理之后可以通过req.user属性访问被认证的用户对象
    2. bodyParser:完成请求体消息的三种转换功能:json(),urlencoded(),multipart(),这三个中间件可以分别使用,而bodyParse是对三者的统一封装
    3. compress:对response数据进行压缩处理
    4. cookieParser:对Cookie头进行处理,然后通过req.cookies属性来访问所有cookie对象
    5. cookieSession:提供对Session的支持。我们知道大部分的服务器Session其实是通过cookie来实现的。服务器端通过判断客户端发送的两次请求中某一个cookie项的值是否相同来认定是否是同一个session。处理之后可以通过req.session属性访问session对象
    6. csrf:对CSRF(跨域请求伪造)保护的支持。CSRF是指伪造他人请求发送给受攻击的站点。其防御方法有验证HTTP Refer字段;在请求地址中添加token并进行验证;在HTTP头中自定义属性并进行验证等等。该中间件就是通过生成token来解决的,生成的token可以通过req.csrfToken()来进行访问
    7. directory:使服务器的某项目录能够为外界所访问

    Connect中间件框架

    其实,express中的中间件就是使用了Connect中间件框架。它们是一种包含关系。此外,Connect和Express其实是同一个作者。

    connect支持的中间件就非常多了。从主页中就可以看出:

    其使用方法跟express中中间件的使用方法如出一辙,只是多了一些中间件而已。

    园友luics将Connect中间件分为了三个部分:

    1. Pre-Request 通常用来改写request的原始数据
    2. Request/Response 大部分中间件都在这里,功能各异
    3. Post-Response 全局异常处理,改写response数据等

    自己编写中间件

    中间件函数作为插件被放到请求流中(request flow),在Connnect里使用 connect.use(),或在express中使用app.use()。一个自定义的中间件模块需要返回一个方法,这个方法理想情况下接受 req,res或next三个参数。

    module.exports = function() {  
          
        return function(req, res, next) {  
         // Do Something to `req' or `res'
    
        // Pass to next middleware
        return next();
    
        // Error occurred and pass to error handler
        return next(err);
    
        // Intercept the request and make response directly without pass to next middleware
        return res.send(XXX);
    
        // Hook on `res.end' to perform some decoration on response
        var end_ = res.end;
        res.end = function (text) {
             // Do something to response data ...
             end_.bind(this)(arg1, arg2, ...);
        };
    
      }
    }

    参考资料:

    http://www.cnblogs.com/luics/archive/2012/11/28/2775206.html

  • 相关阅读:
    windows下mongodb的安装
    命令行执行大sql文件
    用css实现3D立方体旋转特效
    tp框架的详细介绍,tp框架基础
    用smarty来做简易留言系统,明细步骤简单操作
    怎么用php语言来做文件缓存
    用smarty模板做数据实现修改、分页等功能
    用smarty模板做的登录
    smarty函数
    Smarty变量
  • 原文地址:https://www.cnblogs.com/cubika/p/3485821.html
Copyright © 2011-2022 走看看