首页 > 解决方案 > 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 }

标签: express-gateway

解决方案


仅此代码不足以获取响应正文。这将简单地挂钩请求正文处理并以解析的方式使其可用于 EG。如果您也想挂钩响应,则需要在响应对象中编写一个挂钩,一旦完成。

您可以在此处找到示例代码

我希望这会有所帮助!

五。


推荐阅读