您的位置:首页 > Web前端 > Node.js

node.js之express框架的中间件

2018-03-28 14:38 423 查看

一、应用级中间件

应用级中间件绑定到 app 对象 使用 
app.use()
 和 
app.METHOD()
, 其中, 
METHOD
 是需要处理的 HTTP 请求的方法,例如 GET, PUT, POST 等等,全部小写。如果这个中间件要作用于具体的请求方法那么使用app.METHOD()。如果是要作用于全部的请求方法那么使用app.use()
例如:1、引入框架和监听端口
var express = require('express');//引入express框架
var app = express();
app.listen(9000);//监听9000端口
// 挂载至 /user/:id 的中间件,任何指向 /user/:id 的请求(不管是put、post或是其他请求)都会执行它
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
// 路由和句柄函数(中间件系统),处理指向 /user/:id 的 GET 请求
app.get('/user/:id', function (req, res, next) {
res.send('USER');
});
备注:next();函数是运行下一个同名的中间件,如上,如果不调用next();那么app.get(),这个中间件将不会执行
2、为路由定义多个中间件的注意点app.get('/user/:id', function (req, res, next) {
console.log('ID:', req.params.id);
next();
}, function (req, res, next) {
res.send('User Info');
});

// 处理 /user/:id, 打印出用户 id,这个中间件将不会执行,因为上一个中间件使用res.send('User Info');就已经终止了该次请求

app.get('/user/:id', function (req, res, next) {
res.end(req.params.id);
});

二、路由级的中间件(路由级的中间件和应用级的并没有多大的区别,只是需要件路
4000
由中间件挂载到应用)

var app = express();
var router = express.Router();
// 处理 /user/:id, 渲染一个特殊页面
router.get('/user/:id', function (req, res, next) {
console.log(req.params.id);
res.render('special');
});
// 将路由挂载至应用
app.use('/', router);

三、错误的中间件:

 错误处理中间件有 4 个参数,定义错误处理中间件时必须使用这 4 个参数。即使不需要 next 对象,也必须在签名中声明它,否则中间件会被识别为一个常规中间件,不能处理错误。

错误处理中间件和其他中间件定义类似,只是要使用 4 个参数,而不是 3 个,其签名如下: (err, req, res, next)。app.use(function(err, req, res, next) {
console.error(err.stack);
res.status(500).send('Something broke!');
});

四、第三方中间件

通过使用第三方中间件从而为 Express 应用增加更多功能。
安装所需功能的 node 模块,并在应用中加载,可以在应用级加载,也可以在路由级加载。

下面的例子安装并加载了一个解析 cookie 的中间件: cookie-parser$ npm install cookie-parser
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');

// 加载用于解析 cookie 的中间件
app.use(cookieParser());参考:http://www.expressjs.com.cn/guide/using-middleware.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: