Запрос с запросом-обещанием и multipart / form-data - PullRequest
0 голосов
/ 27 июня 2019

Мне нужно реализовать следующий рабочий процесс:

Сделать запрос № 1, получить ответ JSON.Управляйте этим объектом JSON, чтобы он мог использоваться в качестве полезной нагрузки во втором запросе.Сделайте второй запрос.

Первый запрос успешно выполнен.Я получил правильный объект JSON.Часть манипуляции также сделана и проверена.

Мне удалось создать правильную коллекцию почтальона для второго запроса.Он использует метод POST, имеет несколько заголовков, Content-type - multipart / form-data, а полезная нагрузка из запроса №1 отправляется как Raw (в теле, параметры none, form-data и т. Д. Я выбираю raw),

Я пытаюсь реализовать этот второй запрос, но получаю сообщение об ошибке, независимо от того, что я пытаюсь настроить.Вот мой код:

const manipulatedObject = await this._flattenPayload(payload);
const Request = require(request-promise);

const options = {
  method: 'POST',
  uri: 'https://second_request_url',
  formData: {
    file: {
      value: manipulatedObject,
    },
  },
  headers: {
    Accept: 'application/json, text/plain, */*',
    Connection: 'keep-alive',
    'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryxxxxxxxxxxxxxxxx', // this is generated dynamically and matches the value in the manipulatedObject
    cookie: this.cachedCookie,
    'X-XSRF-TOKEN': this.cachedToken,
  },
};

Request(options)
  .then((body) => {
    return body;
  })
  .catch((error) => {
    return error;
  });

* Полезная нагрузка параметра - это ответ на первый запрос .

Я получаю следующую ошибку:

message = source.on не является функцией, stack = TypeError: source.on не является функцией

Переменная ManagedObject является строкой.В настоящее время я копирую его значение из успешного запроса почтальона, чтобы избежать ошибок в процессе манипуляции.Случайный токен в заголовке Content-Type совпадает с токеном в строке managedulatedObject.Таким образом, данные идентичны тем, которые я использую в запросе почтальона.

Я подозреваю, что ошибка в том, как я отправляю данные, но у меня возникают проблемы с их выяснением.Я читал об этой ошибке, и она создается, когда объект передается в formData, но я отправляю строку, поэтому не понимаю, почему это происходит.

1 Ответ

0 голосов
/ 05 июля 2019

Значения formData принимает только три типа элементов, а именно. строка, буфер и поток. См .: запрос / проблемы / 2366

U может изменить formData следующим образом:

 formData: {
     file: manipulatedObject,
   },

или

 formData: {
     file: {
        value: manipulatedObject,
        options: {},
      },
   },
...