我正在尝试使用接受数据作为表单数据的 API。在我给出的 PHP 示例中,使用 GuzzleHttp 的工作代码如下:
$response = $client->post('http://example.com', [
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer ' . $accessToken
],
'form_params' => [
'items' => $items
]
])
在我的 JS 中,我有以下代码。根据 Request 文档,使用 formData 将使用 FormData 库将对象解析为正确的格式。
我已经使用 Postman 手动完成了这项工作。我发送一个 x-www-form-urlencoded 正文,其字段如下:
item[0] = "abc"
item[1] = "def"
任何人都可以看到我在这里缺少什么以及为什么这不起作用吗?
const items = ["abc", "def"];
const response = await post({items: items}, "http://example.com")
exports.post = async function (data, url) {
const token = await getAccessToken();
const response = await request({
method: 'POST',
url: url,
headers:
{
Connection: 'keep-alive',
Authorization: `Bearer ${token.data.access_token}`,
Accept: 'application/json',
},
formData: data
});
return JSON.parse(response);
};
最佳答案
我认为您的属性 items
中有一个拼写错误,它应该是 item
。
您引用的 JavaScript 代码实际上正在发送以下内容:
formData: { items: [ 'abc', 'def' ] }
从您引用的 PHP 代码来看,您应该发送:
formData: {item: ['abc', 'def']}
所以我认为你应该将示例代码更改为:
const response = await post({item: items}, "http://example.com");
关于javascript - 使用 Request 在 Javascript 中发送表单数据数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57772356/