mm_os
Version:
这是超级美眉服务端框架,用于快速构建应用程序。
66 lines (60 loc) • 1.52 kB
JavaScript
const xmlParser = require("mm_xml");
const session = require('mm_session');
const compress = require('koa-compress');
const { koaBody } = require('koa-body');
const send = require('koa-send');
/**
* web基础
* @param {Object} server 服务
* @param {Object} config 配置参数
*/
module.exports = function(server, config) {
/**
* 发送文件
*/
server.use(async (ctx, next) => {
ctx.send = async function(src) {
await send(ctx, src);
}
await next();
});
// 设置session 保存时长2小时
server.use(session({
maxAge: $.login_period || config.maxAge || 7200
}));
// 使用压缩
if (config.compress) {
server.use(
compress({
filter: function(content_type) {
// 只有在请求的content-type中有gzip类型,我们才会考虑压缩,因为zlib是压缩成gzip类型的
return /text/i.test(content_type);
},
// 阀值,当数据超过1kb的时候,可以压缩
threshold: 1024,
// zlib是node的压缩模块
flush: require('zlib').Z_SYNC_FLUSH
})
);
}
// 解析 text/xml
server.use(xmlParser());
var func = koaBody({
jsonLimit: config.jsonLimit || '20mb',
multipart: true,
formidable: {
// 设置上传文件大小最大限制,默认20M
maxFileSize: 2000 * 1024 * 1024
}
});
// 解析 application/json、application/x-www-form-urlencoded、text/plain
// 接收主体
server.use(async (ctx, next) => {
if (!ctx.request.body) {
await func(ctx, next);
} else {
await next();
}
});
return server;
};