Node.js中如何在GET请求参数中传递JSON数组?
解决GET API接收数组参数的调用问题
首先看你提供的CURL示例,这个API虽然用的是GET方法,但要求在请求体中传递JSON格式的数组参数——这不符合HTTP标准规范,但部分服务端会这样实现。你之前的尝试要么是把数组放在URL参数里,要么用了POST方法,都不符合这个API的要求。
正确的调用方式(以常用库为例)
1. 使用 axios 库
如果项目用的是axios,需要在GET请求中指定data字段传递请求体:
const axios = require('axios'); try { const response = await axios.get('你的API地址', { headers: { "Content-Type": "application/json" }, data: { arr: ["1234", "1235"] } }); console.log(response.data); } catch (error) { console.error(error.response.data); }
2. 使用 request-promise 库
若使用request-promise,需要显式配置请求方法、body和json选项:
const rp = require('request-promise'); try { const response = await rp({ method: 'GET', uri: '你的API地址', headers: { "Content-Type": "application/json" }, body: { arr: ["1234", "1235"] }, json: true // 自动序列化body为JSON,并解析响应 }); console.log(response); } catch (error) { console.error(error); }
为什么之前的尝试失败?
- 最初的代码把数组用逗号拼接放在URL参数
arr=1234,1235,但API期望的是JSON数组格式的请求体,而非URL参数。 - 改用POST请求无效,说明该API仅接受GET方法。
- 其他URL参数格式(如
arr[]、arr=["1234"])都不符合API对参数位置和格式的要求。
注意:并非所有HTTP客户端都支持GET请求带请求体,上述两个库是常用且支持该操作的选择。
内容的提问来源于stack exchange,提问作者akilesh
相关产品推荐
相关产品推荐

