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
相关文章推荐
- Express---node.js-express框架中的主要方法,使用中间件关联 多个路由
- nodejs express 框架解密3-中间件模块
- Node.js Express 框架
- js的node.js和express框架在centos的安装及简单实例
- node.js express框架跨域设置
- [译]Node.js 框架比较: Express vs. Koa vs. Hapi
- nodejs express 框架 上传文件
- Node.js安装express框架出现的问题级解决
- node.js 和 express 框架学习笔记(3)
- node.js 和 express 框架学习笔记(2)
- 用node.js建博客(一) - node.js安装及Express框架简介
- Express 4.x Node.js的Web框架
- 用node.js建博客(一) - node.js安装及Express框架简介
- 从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
- Mac node.js安装express中间件
- 使用Node.js的express框架搭建一个简单项目并且添加了一个路由
- node.js的express框架搭建
- Node.js学习-web框架-2-中间件
- Express 4.x Node.js的Web框架
- 基于node.js及express实现中间件,实现post、get