Ошибка многочастного запроса Axios - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь отправить запрос на конвертацию doc в pdf с помощью службы.Служба работает нормально с почтальоном, вы можете отправить документ в конечную точку, и он вернет мне PDF, хорошо.

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

{"time":"2019-09-24T14:39:46.89404124Z","id":"","remote_ip":"000.00.000.00","host":"pdf-doc-convert.example","method":"POST","uri":"/convert/office","user_agent":"axios/0.19.0","status":500,"error":"getting multipart form: no multipart boundary param in Content-Type","latency":221460,"latency_human":"221.46µs","bytes_in":0,"bytes_out":36}

Это служебная документация, простая запись с запросом multipart / form-data (идут с примером скручивания):

https://thecodingmachine.github.io/gotenberg/#office

И это мой запрос с axios:

async function request() {
    const endpoint =
          "http://pdf-doc-convert.example/convert/office";
    const data = new FormData();
    data.append('files', fs.createReadStream("my/file/path/example.docx"));
    const config = {
      headers: {
        "content-type": "multipart/form-data"
      }
    };
    const pdf = await axios.post(endpoint, data, config);
}

Как я могу сделать запрос?

1 Ответ

1 голос
/ 24 сентября 2019

Возможно, самый быстрый способ отладки - перехватить выполняемый вами вызов с помощью запроса Axios с помощью Postman Intercept и сравнить информацию о запросе cURL от того, который работает, с тем, который не работает.Это может быть либо проблема заголовков, либо проблема кодировки файлов.

Ранее я встречал нечто подобное, и это может быть связано с заголовками formData, которые требуют дополнительной настройки в Axios, как упомянуто здесь: https://github.com/axios/axios/issues/789#issuecomment-508114703

const data = new FormData();

data.append("firstFile", fs.createReadStream(firstFilePath), { knownLength: fs.statSync(firstFilePath).size });

const headers = {
    ...data.getHeaders(),
    "Content-Length": data.getLengthSync()
};

const endpoint = "http://pdf-doc-convert.example/convert/office";

const pdf = await axios.post(endpoint, data, config);

...