Express中间件-01: 入门

这里写图片描述

中间件在接受请求的时间点及正式处理请求到发送响应时点之间提供附加功能。

Express的connect模块提供了中间件框架,通过它可以方便地在全局或路径级别或给单个路由插入中间件功能。

下面是一些由Express支持的中间件组件:

中 间 件说 明
static允许Express服务器以流式处理静态文件的GET请求。这个中间件是Express内置的,它可以通过express.static()访问。
express-logger实现一个格式化的请求记录器来跟踪对服务器的请求
basic-auth-connect提供对基本的HTTP身份验证的支持
cookie-parser你可以从请求读取cookie并在响应中设置cookie
cookie-session提供基于cookie的会话支持
body-parser把POST请求正文中的JSON数据解析为rep.body属性
compression对发给客户端的大响应提供Gzip压缩支持
csurf提供跨站点请求伪造保护

1、在全局范围内把中间件分配给某个路径

对所有路由指定中间件,可以在Express app对象上实现use()方法。语法如下:

use([path],  middleware)

path变量: 可选,默认值为 ‘/’ ,意味着所有的路径。
middleware参数: 函数,接受三个参数,分别是req、res和next。next是要执行的下一个中间件函数;

每个中间件组件都有一个构造函数,它返回相应的中间件功能;

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

app.use('/', bodyParser()); // 把body-parser中间件分配给所有路径

2、给单个路径分配中间件

var express = require('express');
var bodyParser = require('body-parser');
var app = express();

app.get('/home', bodyParser(), function(req, res) {
    res.send('This request was logged...');
});

app.get('/body', function(req, res) {
    res.send('This request was not logged..');
});

3、添加多个中间件函数

var express = require('express'),
    bodyParser = require('body-parser'),
    cookieParser = require('cookie-parser'),
    session = require('express-session');

var app = express();
app.use('/', bodyParser())
   .use('', cookieParser())
   .use('', session());

注意:
分配函数的顺序就是它们在请求中被应用的顺序。一些中间件函数需要被添加在别的中间件函数前面。

4、使用query中间件

query中间件将一个查询字符串从URL转换为JavaScript对象,并将其保存为Request对象的query属性。

从Express 4.x开始,这个功能在内置请求解析器中存在,而不需要额外的中间件。

下面,是使用query中间件的基本方法:

var express = require('express');
var app = express();

app.get('/', function(req, res) {
    var id = req.query.id,
        score = req.query.score;
    console.log( JSON.stringify( req.query ) );
    res.send('done');
});
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值