Обещание Nodejs-Request получить тело ответа JSON из POST

Я пытаюсь отправить запрос POST, используя request-promise, в службу HTTP, которая возвращает данные JSON. Я использую для resolveWithFullResponse значение true, а для параметра json установлено значение true. Я также использую опцию gzip, если это имеет значение.

Можно ли как-нибудь request-promise автоматически преобразовать данные ответа в JSON? В настоящее время тело ответа представляет собой строку. Вот как выглядят мои варианты запроса:

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

person user3638992    schedule 16.10.2018    source источник
comment
Если API возвращает строку в body.data, преобразование в ответ json невозможно, вы можете собрать ответ и преобразовать его в JSON с помощью JSON.parse ().   -  person Chandan Kumar    schedule 16.10.2018
comment
Я смотрел что-то похожее на то, что происходит в запросе GET github.com/request/, где параметр json:true автоматически анализирует JSON   -  person user3638992    schedule 16.10.2018


Ответы (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;
            }
}
person Sanket    schedule 17.10.2018