javascript - 在 ExpressJS 中执行 res.send() 之前修改响应正文
问题描述
在我目前开发的应用程序中,它使用 Express。在我的情况下,我想在发送和修改它之前得到响应(出于 JWT 的目的)。在这个应用程序中,有十几个端点,我不想创建自己的函数sendAndSign()
并替换res.send()
代码中的任何地方。我听说有选项可以覆盖/修改res.send(...)
方法的逻辑。
我发现了类似这个修改示例的内容,但在我的情况下这不起作用。是否有任何其他选项(可能使用某些插件)来管理此操作?
解决方案
您可以通过临时覆盖拦截 Express 中的响应正文res.send
:
function convertData(originalData) {
// ...
// return something new
}
function responseInterceptor(req, res, next) {
var originalSend = res.send;
res.send = function(){
arguments[0] = convertData(arguments[0]);
originalSend.apply(res, arguments);
};
next();
}
app.use(responseInterceptor);
我在 Node.js v10.15.3 中进行了测试,效果很好。
推荐阅读
- linux - clad 扫描功能的奇怪行为
- python - 权限错误[Errno13]安装robotframework-SikuliLibrary时权限被拒绝
- fuzzing - 更改 AFL 的输入源优先级
- image - Grafana SigV4 身份验证 - Docker 映像?
- python - Pandas 按每个组内的日期范围过滤
- c++ - 在 main 中编辑代码时 aplay 读取错误
- c# - 我可以使用哪些替代方案或解决方法来解决 onApplicationFocus 问题?
- sql - 更好的方法来内部连接表,其中一个表或另一个表中的值
- typescript - 在辅助函数上触发“表达式始终为真”警告
- swagger - 如何关闭 Swagger UI 的自动翻译?