express.static(root, [options])
express.static
是 Express 内置的唯一一个中间件。是基于 serve-static 开发的,负责托管 Express 应用内的静态资源。
属性 | 描述 | 类型 | 默认值 |
---|---|---|---|
dotfiles | 控制点文件服务,可选值为allow,deny,'ignore' | String | “ignore” |
etag | 控制etag生成 | Boolean | true |
extensions | 设置文件后缀名补充 | Boolean | false |
index | 设置目录访问的返回,设置为false可以禁止目录访问 | Mixed | “index.html” |
lastModified | 根据文件修改时间设置Last-Modified报头 | Boolean | true |
maxAge | 设置Cache-Control报头的缓存控制时间,单位为毫秒 | Number | 0 |
redirect | 当路径名是目录时,重定向到包含结尾/的目录 | Boolean | true |
setHeaders | 函数用于为文件设置HTTP头 | Function |
关于此中间件的细节,请参考 通过 Express 托管静态资源文件。
body-parser是非常常用的一个express中间件,作用是对post请求的请求体进行解析。使用非常简单,以下两行代码已经覆盖了大部分的使用场景。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
POST / HTTP/1.1
Host: 127.0.0.1:8080
Content-Type: text/html; charset=utf8
Content-Encoding: gzip
zfpx
var http = require('http');
var options = {
hostname: '127.0.0.1',
port: '3000',
path: '/',
method: 'POST',
headers: {
'Content-Type': 'text/plain',
'Content-Encoding': 'identity'
}
};
var client = http.request(options, (res) => {
res.pipe(process.stdout);
});
client.end('zfpx');
var http = require('http');
var parse = function (req, done) {
let arr = [];
req.on('data', data => {
arr.push(data);
});
req.on('end', () => {
let result = Buffer.concat(arr);
done(result);
});
};
var server = http.createServer(function (req, res) {
parse(req, (chunks) => {
res.end(chunks)
});
});
server.listen(3000);
'Content-Type': 'application/json',
client.end( JSON.stringify({name:zfpx}) );
var json = JSON.parse( chunks.toString() );
'Content-Type': 'form/x-www-form-urlencoded',
client.end( querystring.stringify({name:'zfpx}) );
var body = querystring.parse( chunks.toString() );
var iconv = require('iconv-lite');
var encoding = 'gbk';
'Content-Type': 'text/plain; charset=' + encoding,
var buff = iconv.encode('zfpx', encoding);
var contentType = require('content-type');
var obj = contentType.parse(req.headers['content-type']);
var charset = obj.parameters.charset;
var body = iconv.decode(chunks, charset);
var zlib = require('zlib');
'Content-Encoding': 'gzip'
var buff = zlib.gzipSync('zfpx');
client.end(buff);
var contentEncoding = req.headers['content-encoding'];
if(contentEncoding === 'gzip') {
stream = zlib.createGunzip();
req.pipe(stream);
}