Node.js提供了20多种内置中间件供我们使用:
- logger: 用户请求日志中间件
- csrf: 跨域请求伪造保护中间件
- compress: gzip压缩中间件
- basicAuth: basic认证中间件
- bodyParser: 请求内容解析中间件
- json: JSON解析中间件
- urlencoded: application/x-www-form-urlencode请求解析中间件
- multipart: multipart/form-data请求解析中间件
- timeout: 请求超时中间件
- cookieParser: cookie解析中间件
- session: 会话管理中间件
- cookieSession: 基于cookies的会话中间件
- methodOverride: HTTP伪造中间件
- reponseTime: 计算响应时间中间件
- staticCache: 缓存中间件
- static: 静态文件处理中间件
- directory: 目录列表中间件
- vhost: 虚拟二级域名映射中间件
- favicon: 网页图标中间件
- limit: 请求内容大小限制中间件
- query: URL解析中间件
- errorHadnler: 错误处理中间件
具体用法及其API请参考:
当然,我们也可以自己实现自定义中间件,其实中间件可以简单理解为一个回调事件函数。
var connect = require("connect"); var app = connect(); //注册自定义中间件(将中间件添加到队列中,等待执行) app.use(access).use(test); function access(req,res,next){ var hour = new Date().getHours(); if(hour < 9){ res.writeHead(503,{"Content-Type":"text/plain;charset=utf-8"}); res.end("禁止访问"); }else{ next();//转入下一个中间件处理 } } function test(req,res,next){ res.writeHead(200,{"Content-Type":"text/plain"}); res.end("Hello World !!!"); } app.listen(3000);
这里定义了一个中间件,并将其注册到了中间件队列中(具体原理可以参考Node.js事件循环),中间件处理逻辑是禁止9点以前的访问。