使用Node.js发送带有formData的POST请求

3
我想发送一个包含表单数据的POST请求,我想从Node.js发送到另一个外部API,我没有前端来发送formData,所以我只有一个具有键和值的JavaScript对象,那么我该怎么做呢?当我尝试发送一个普通对象时,我没有得到正确的API响应,但是当我用POSTMAN客户端发送时,我得到了正确的响应。
参考图片:enter image description here
2个回答

9

如果在Postman中得到了正确的结果,使用相同工具中的代码生成器来获取所需的代码可能会很有趣 :). 该按钮“</>”位于屏幕右侧的栏中。

以下是从该工具生成的代码:

var axios = require('axios');
var FormData = require('form-data');
var data = new FormData();
data.append('data', 'asldkfjalsdkjf');

var config = {
  method: 'post',
  url: 'https://some-domain.com/formdata',
  headers: { 
    ...data.getHeaders()
  },
  data : data
};

axios(config)
.then(function (response) {
  console.log(JSON.stringify(response.data));
})
.catch(function (error) {
  console.log(error);
});

很酷,不是吗?还有一个好消息,你可以选择从NodeJS到C#、PHP等多个选项。 :)

输入图像描述


非常感谢,真的很有趣,而且你还是越南人,哈哈,更有趣。 - undefined

1

你想使用nodejs进行POST请求吗?为了实现这个目的,你可以使用axios库,并以以下方式发送数据。

const axios = require('axios');

let formData = new FormData();
formData.append('x': 'some test data');

axios({
  method: 'post',
  url: 'https://stackoverflow.com/posts/67709177',
  data: formData,
  headers: { 'Content-Type': 'multipart/form-data' },
})
  .then(res => {
    console.log(`statusCode: ${res.statusCode}`)
    console.log(res)
  })
  .catch(error => {
    console.error(error)
  })

您可以使用以下命令安装axios。

npm i axios

问题是,如何将"x: 'some test data'"的类型设置为FormData,因为显然当我发送一个普通对象时,API会响应"请提供一个formData",而当我使用Postman进行操作时,它却可以正常工作。 - undefined
你需要为此创建一个FormData对象。 我已经更新了我的回答。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接