javascript - 使用 Request 在 Javascript 中发送表单数据数组?

标签 javascript node.js node-request

我正在尝试使用接受数据作为表单数据的 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/

相关文章:

javascript - DOM 对象是在哪里诞生的?

node.js - 在 Node.js 中 - 事件(EventEmitter 和 Listener Function 对象)和异步回调之间是否有任何关系

javascript - 如何将 JS 函数的结果解析为 SVG 对象?

javascript - 为什么 javascript 行必须在函数中才能工作?

php - 使用两个单独的域一起运行 NodeJs 和 Apache

javascript - 带 Express 的 Aurelia 的最小示例

javascript - 如何从 Node 请求创建 RxJs Observable

javascript - 代理请求超过时间提供错误

javascript - NodeJS 请求模块 - http.IncomingMessage 上的正文?

javascript - jQuery Mobile 和 TouchSwipe jQuery 插件错误