Запрос с запросом-обещанием и multipart/form-data

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

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

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

Мне удалось создать правильную коллекцию почтальонов для второго запроса. Он использует метод POST, имеет несколько заголовков, Content-type — multipart/form-data, а полезная нагрузка из запроса № 1 отправляется как Raw (в теле, без опций, 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 совпадает с маркером в строке ManagedObject. Таким образом, данные идентичны тем, которые я использую в запросе почтальона.

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


person Lazarus Rising    schedule 27.06.2019    source источник


Ответы (1)


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

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

 formData: {
     file: manipulatedObject,
   },

or

 formData: {
     file: {
        value: manipulatedObject,
        options: {},
      },
   },
person senique    schedule 05.07.2019