• 【怪咖】---中间件---


    中间件(Middleware):

       中间件是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。

       说白了中间件就是一种功能的封装方式,就是封装在程序中处理http请求的功能。

    1、中间件的结构

      app.use([path],function)

        path:是路由的url,默认参数'/',意义是路由到这个路径时使用这个中间件;

        function:中间件函数,这个中间件函数可以理解为就是function(request,response,next);

    2、中间件分类

      A.内置中间件

        express.staticExpress目前唯一内置的一个中间件。用来处理静态资源文件。

      B.自定义中间件

        在上面中间件结构中,我们知道了,中间件使用是的地儿个参数是一个function,然而,要自定义一个中间件,就是倒腾一番这个function。

        function总共有三个参数(req,res,next);

        当每个请求到服务器是,nodejs会为请求创建一个请求对象(request),该请求对象包含客户端提交上来的数据。同时一会创建一个响应对象(response),响应对象主要负责将服务器的数据响应到客户端。而最后一个参数next是一个方法,因为一个应用中可以使用多个中间件,而要想运行下一个中间件,那么伤一个中间Ian必须运行next()。

        下面是定义一些中间件来实现一个路由功能:

          在express的use中使用next()可以放行中间件,执行下一条匹配的路由,需要注意的是,响应只能响应一次,后面的所有响应都没有效果了,如果再第一次匹配的路由做了响应,那么后面路由中的响应不会生效,但是其它代码依旧可以执行。

        C.第三方中间件

          有关第三方中间件,举几个常用的:

          body-parser:解析body中的数据,并将其保存为Request对象的body属性

          cookie-parser:解析客户端cookie中的数据,并将其保存为request对象的cookie属性

          express-session:解析服务端生成的sessionid对应的session数据,并将其保存为request对象的session属性

          query:这个中间件将一个查询字符串从url转换为JS对象,并将其保存为Request对象的query属性。

    3.总结

        中间件可以总结为以下几点:

        ①.封装了一些处理一个完整事件的功能函数;

        ②.非内置的中间件需要通过安装后,require到文件就可以运行;

        ③.封装了一些或许复杂但肯定是通用的功能。

  • 相关阅读:
    Python 多线程学习(转)
    自己使用python webob,paste.deploy,wsgi总结
    Python中*args 和**kwargs的用法
    python 数字和字符串转换问题
    python socket编程
    深入解读Quartz的原理
    解决get方法传递URL参数中文乱码和解决tomcat下中文乱码问题
    Tomcat的Manager显示403 Access Denied
    mysql5.6 linux下安装笔记
    Quartz应用与集群原理分析
  • 原文地址:https://www.cnblogs.com/xiaoyushuai/p/10258651.html
Copyright © 2020-2023  润新知