【问题标题】:Nodejs-Request promise get JSON response body from POSTNodejs-Request 承诺从 POST 获取 JSON 响应正文
【发布时间】:2019-03-21 10:26:49
【问题描述】:

我正在尝试使用 request-promise 向返回 JSON 数据的 HTTP 服务发出 POST 请求。我将resolveWithFullResponse 设置为true,并将json 选项设置为true。我也在使用 gzip 选项,如果这有影响的话。

无论如何我可以让request-promise 自动将响应数据转换为 JSON 吗?目前,响应正文是一个字符串。这是我的请求选项的样子:

{
   url: 'http://foo.com/getData',
   json: true,
   body: {
      hello: world
   },
   resolveWithFullResponse: true,
   gzip: true
}

【问题讨论】:

  • 如果你的API在body.data中返回一个字符串,那么无法转换成json响应,你可以收集响应并使用JSON.parse()转换成JSON。
  • 我正在查看类似于 GET 请求 github.com/request/… 中发生的情况,其中 json:true 选项会自动解析 JSON

标签: node.js request-promise


【解决方案1】:

您应该使用请求模块的 transform 选项。在请求对象下方查找。

{
   url: 'http://foo.com/getData',
   json: true,
   body: {
      hello: world
   },
   resolveWithFullResponse: true,
   gzip: true,
   transform: function (body, response) {
                if (response.headers['content-type'] === 'application/json') {
                    response.body = JSON.parse(body);
                }
                return response;
            }
}

【讨论】:

    猜你喜欢
    • 2022-10-19
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2017-06-19
    • 2019-07-06
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多