内容
- 搭建一个Connect程序
- Connect中间件的工作机制
- 为什么中间件的顺序很重要
- 挂载中间件和服务器创建可配置的中间件
- 使用错误处理中间件
Connect常用的组件
在Connect中,中间件组件是一个函数,它拦截HTTP服务器提供的请求和响应对象,执行逻辑,然后或者结束响应,或者把它传递给下一个中间件组件。
Connect用分派器把中间件“连接”在一起
- 请求日志
- 静态文件服务
- 请求体解析
- 会话管理
使用connect
1)安装
npm install connect
2)引入
Connect创建的“程序”实际上是一个JavaScript函数,用来接收HTTP请求并把它派发给你指定的中间件
它依次调用所有附着的中间件组件,直到其中一个决定响应该请求。如果直到中间件列表末尾还没有组件决定响应,程序会用404作为响应
var connect = require('connect');
var app = connect();
app.listen(3000);
connect工作机制
在Connect中,中间件组件是一个JavaScript函数,按惯例会接受三个参数:
一个请求对象,
一个响应对象,
还有一个通常命名为next的参数,它是一个回调函数,表明这个组件已经完成了它的工作,可以执行下一个中间件组件了
使用中间件
中间件组件hello的参数中没有next回调。因为这个组件结束了HTTP响应,从不需要把控制权交回给分派器var connect = require('connect'); var app = connect(); app.use(logger); app.use(hello); app.listen(3000, function() { console.log('listening...'); }); function logger(req, res, next) { console.log('%s %s', req.method, req.url); next(); } function hello(req, res) { res.setHeader('Content-Type','text/plain'); res.end('hello world'); }
中间件的顺序
1) 中间件.use()调用的顺序很重要,以及如何策略性地调整顺序改变程序的工作方式
2) 当一个组件不调用next()时,命令链中的后续中间件都不会被调用
3) 使用中间件执行认证,只允许有效的用户访问挂载中间件和服务器
挂载将只对路径前缀(挂载点)内的请求调用中间件或程序,通过拦截请求进行处理- basic认证
- Basic认证是一种简单的认证机制,借助带着Base64编码认证信息的HTTP请求头中的authorization字段进行认证
- 中间件组件解码认证信息,检查用户名和密码的正确性
function restrict(req, res, next) { var authorization = req.headers.authorization; if(!authorization) return next(new Error('Unauthorized')); var parts = authorization.split(