【nodeJs】connect中间件的简单使用

  • Connect是一个框架,它使用被称为中间件的模块化组件,在Connect中,中间件组件是一个函数,它拦截HTTP服务器提供的请求和响应对象,执行
    逻辑,或者结束响应,或者把它传递给下一个中间件组件。Connect用分派器把中间件“连
    接”在一起。
    这里写图片描述
  • 工作机制:在Connect中,中间件组件是一个JavaScript函数,按惯例会接受三个参数:一个请求对象,
    一个响应对象,还有一个通常命名为 next 的参数,它是一个回调函数,表明这个组件已经完成
    了它的工作,可以执行下一个中间件组件了。当一个组件不调用 next() 时,命令链中的后续中间件都不会被调用

  • 一个简单的connect

var connect = require('connect');

function logger(req, res, next) {
    console.log('Hi');
    next();
}

function hello(req, res, ) {
    res,setHeader('Content-type', 'text/plain');
    res.end('hello world');
}

connect()
.use(logger)
.use(hello)
.listen(3000)
hello 的参数中没有 next 回调,因为这个组件结束了HTTP响应,
从不需要把控制权交回给分派器

上面的链式调用也可以写成:
var app = connect();
app.use(logger);
app.use(hello);
app.listen(3000);
  • 挂载中间件和服务器: Connect中有一个挂载的概念,可以给中间件或整个程序
    定义一个路径前缀。使用挂载,你可以像在根层次下那样编写中间件(/ 根 req.url ),并且不修
    改代码就可以把它用在任一路径前缀上。
connect()
.use(logger)
.use('/admin', restrict)
.use('/admin', admin)
.use(hello)
.listen(3000)
  • 路由中间件组件: 路由会把请求URL映射到实现业务逻辑的
    函数上。
    这里写图片描述
  • 错误处理中间件: 错误处理中间件函数必须接受四个参数: err 、 req 、 res 和 next ,
    而常规的中间件只有三个参数: req 、 res 和 next 。
function errorHandler(err, req, res, next) {
    console.error(err.stack);
    res.setHeader('Content-Type', 'application/json');
    if(err.notFound){
        ...
    } else {
        res.statusCode = 500;
        res.end('error:Internal Server Error');
    }
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/ac_greener/article/details/80295724