Authored by htoooth

fix add encode route

... ... @@ -139,6 +139,7 @@ try {
const layoutTools = require('./doraemon/middleware/layout-tools');
const pageCache = require('./doraemon/middleware/page-cache');
const devtool = require('./doraemon/middleware/devtools');
const routeEncode = require('./doraemon/middleware/route-encode');
// YOHO 前置中间件
app.use(setYohoData());
... ... @@ -157,6 +158,7 @@ try {
app.use(setPageInfo());
app.use(layoutTools());
app.use(pageCache());
app.use(routeEncode.md);
if (app.locals.devEnv) {
app.use(devtool());
... ...
... ... @@ -64,7 +64,8 @@ exports.serverError = () => {
reqID: req.reqID,
uid,
udid,
code: err.code || 500
code: err.code || 500,
path: `[${req.method}]${res.locals._router}`
},
fields: {
message: err.message,
... ...
const _ = require('lodash');
const crypto = global.yoho.crypto;
function urlJoin(a, b) {
if (_.endsWith(a, '/') && _.startsWith(b, '/')) {
return a + b.substring(1, b.length);
} else if (!_.endsWith(a, '/') && !_.startsWith(b, '/')) {
return a + '/' + b;
} else {
return a + b;
}
}
function _encode(str) {
return encodeURIComponent(crypto.encryption(null, str));
}
const encode = _.memoize(_encode);
function getRouter(req) {
let route = req.route ? req.route.path : '';
let appPath = req.app.mountpath;
if (_.isArray(route) && route.length > 0) {
route = route[0];
}
let key = urlJoin(appPath, route.toString()); // route may be a regexp
if (key) {
return encode(key);
}
return '';
}
module.exports.md = function(req, res, next) {
function onRender() {
res.locals._router = getRouter(req);
}
res.on('beforeRender', onRender);
next();
};
module.exports.getRouter = getRouter;
... ...
... ... @@ -65,5 +65,6 @@
<script>window.cdn='{{cdn}}';</script>
<script>window._version='{{version}}';</script>
<script>window._router = '{{_router}}';</script>
</body>
</html>
... ...