1.5 后端 express中间件 - OhNaNaSun/angularBlog GitHub Wiki

body-parser

参考: 👍 如何在nodejs express项目中使用body-parser的同时获取JSON化的body和raw body express项目中通常使用body-parser进行post参数的解析,最常用的是其中的json和urlencoded的parser,可分别对以JSON格式的post参数和urlencoeded的post参数进行解析,均可获得一个JSON化的req.body 用法:

app.use(bodyParser.raw);
app.use(bodyParser.json);
app.use(bodyParser.urlencoded({
    extended: false
});

express-session

使用默认设置。将session信息保存在内存中

app.use(session({
    secret: 'angularblogsession', // 建议使用 128 个字符的随机字符串
    cookie: { maxAge: 60 * 1000 * 60 * 24 * 30 },//30 days
    maxAge: Date.now() + (30 * 86400 * 1000),
    expires: new Date(Date.now() + (30 * 86400 * 1000)),
    rolling: true,
    resave: true,
    saveUninitialized: true
}))
>出现的问题:
cookie保存,但是session过期了。
解释:[Node + Express Session Expiration?](http://stackoverflow.com/questions/11826792/node-express-session-expiration)
the MemoryStore only stores sessions for as long as the express App is running. So if you restart your server at any point, the cookies aren't linked to an in-memory session any more and express will make your users sign in again.

morgan

参考:http://expressjs.jser.us/api 使用 app.use() “定义的”中间件的顺序非常重要,它们将会顺序执行,use的先后顺序决定了中间件的优先级。 比如说通常 express.logger() 是最先使用的一个组件,纪录每一个请求

app.use(express.logger());
app.use(express.static(__dirname + '/public'));
app.use(function(req, res){
  res.send('Hello');
});

如果你想忽略请求静态文件的纪录,但是对于在 logger()之后定义的路由和中间件想继续纪录,只需要简单的把 static() 移到前面就行了:

app.use(express.static(__dirname + '/public'));
app.use(express.logger());
app.use(function(req, res){
  res.send('Hello');
});

express 4

var logger = require('morgan');
app.use(logger('dev'));

参考:morgan的API morgan的API:

morgan(format, options); 其中format表示日志的格式, morgan预定义了一些日志格式,用常量字符串表示,如’combined’, ‘common’, ‘short’, ‘dev’等;options表示选项,比如将日志输出到终端或者文件,这个参数是可选的。 format为’short’时的日志样例:::1 - GET /home HTTP/1.1 304 - - 3.345 ms

errorhandler

https://github.com/expressjs/errorhandler?_ga=1.196006892.1714227595.1474012988

serve-favicon

https://github.com/expressjs/serve-favicon?_ga=1.141457010.1714227595.1474012988