节点/表达GET请求"/>
使用JSON正文在服务器端缓存节点/表达GET请求
我正在尝试使用GET请求在节点/表达式中启动并运行一个简单的服务器端缓存。在处理简单的URL参数时设法使其正常工作,但是不确定如何使用JSON正文进行处理。
到目前为止,这是我的URL参数版本:
const mcache = require('memory-cache');
app.set('view engine', 'jade');
const cache = (duration) => {
return (req, res, next) => {
let key = '__express__' + req.originalUrl || req.url;
let cachedBody = mcache.get(key);
if (cachedBody) {
res.send(cachedBody);
return;
} else {
res.sendResponse = res.send;
res.send = (body) => {
mcache.put(key, body, duration * 1000);
res.sendResponse(body);
};
next();
}
};
};
app.get('/user/:id', cache(10), (req, res) => {
setTimeout(() => {
if (req.params.id == 1) {
res.json({ id: 1, name: 'John' });
} else if (req.params.id == 2) {
res.json({ id: 2, name: 'Bob' });
} else if (req.params.id == 3) {
res.json({ id: 3, name: 'Stuart' });
}
}, 3000); //setTimeout was used to simulate a slow processing request
});
任何指针?
回答如下:我假设您要将带有res.send
的数据传递给app.get
?如果是这样,您既可以在next()内部传递它,也可以像res.locals
这样使用res.locals.varName = catchedBody
,然后就可以在app.get
函数内部使用它,因为它将在整个http请求期间可用。
更多推荐
使用JSON正文在服务器端缓存节点/表达GET请求
发布评论