首页 > 解决方案 > 使用axios发送api时如何使req.files和req.body在nodejs中可用

问题描述

我在我的 Node.js 应用程序中使用 Axios npm 包,它是一个内置的微服务架构。API-gateway 正在使用 Axios 调用其他服务。

根据 axios 文档,对于 POST 方法,请求格式为: axios#post(url[, data[, config]]) 。仅表示一个参数数据。

谁能告诉我如何将 req.body 和 req.files 数据分别发送到 Axios?

标签: node.jspostrequestaxios

解决方案


根据Axios 社区对熟悉问题的回答,这可以通过 npm 包form-data来实现,它在节点端模拟 WebAPI FormData。

这将允许您将文件和表单字段发送到 API 并以多部分表单数据的形式接收它。

const axios = require('axios');
const FormData = require('form-data');

const form = new FormData();
// Second argument  can take Buffer or Stream (lazily read during the request) too.
// Third argument is filename if you want to simulate a file upload. Otherwise omit.
form.append('field', 'a,b,c', 'blah.csv');

axios.post('http://example.org/endpoint', form, {
  headers: form.getHeaders(),
})
.then(result => {
  // Handle result…
  console.log(result.data);
});

推荐阅读