express-gateway - Express Gateway:没有得到响应正文
问题描述
我无法获得需要与请求正文一起存储在日志中的响应正文。我唯一能够获得响应正文的时间是请求失败时。
我已经关注了博客文章,该文章解决了我在使用 body-parser 插件时获取请求正文的问题 - https://www.express-gateway.io/exploit-request-stream/。
const { PassThrough } = require("stream");
const jsonParser = require("express").json();
const urlEncodedParser = require("express").urlencoded({ extended: true });
module.exports = {
name: 'body-parser',
policy: actionParams => {
return (req, res, next) => {
req.egContext.requestStream = new PassThrough()
req.pipe(req.egContext.requestStream)
return jsonParser(req, res, () => urlEncodedParser(req, res, next))
}
}
};
当请求确实有效时:
{ res: { statusCode: 400 },
req:
{ body: { a: 'b' },
headers:
{ ... } },
responseTime: 310 }
当它不起作用时:
{ res: { body: 'Bad gateway.', statusCode: 502 },
req:
{ body: { a: 'b' },
headers:
{ ... } },
responseTime: 1019 }
解决方案
仅此代码不足以获取响应正文。这将简单地挂钩请求正文处理并以解析的方式使其可用于 EG。如果您也想挂钩响应,则需要在响应对象中编写一个挂钩,一旦完成。
您可以在此处找到示例代码
我希望这会有所帮助!
五。
推荐阅读
- java - MySQL 将或不会返回重复行,具体取决于特定列是否存在。为什么?
- git - 获取从 TeamFoundation.SourceControl.WebApi 客户端收到的 GIT 提交者/作者的主身份
- oracle - ORA-00600,参数:[KGL-heap-size-exceeded]
- java - PreferenceGroupAdapter 只能从同一个库组内访问
- php - CakePHP 3 - 未定义关联 - 即使它看起来是
- spring - 如何防止我的 Spring 日志记录方面触发?
- python-3.x - 为什么 json.dumps(json.loads(line)) 的长度比 line 大?
- c# - 如何使用 Nest 索引批量父子文档
- python - 将子图的大小与 gridspec 匹配
- teradata - 根据条件将多行转换为单行