javascript - 以对象为参数的 Axios GET 请求(来自后端)
问题描述
我在axios
向这个 API 发送请求时遇到了很多麻烦,它以对象方式接受参数:
GET https://api.osrsbox.com/items?where={ "name": "Abyssal whip", "duplicate": false }
主要问题是axios
自动编码字符串。在 StackOverflow 中搜索解决方案,我来到了这个:
const item = "Abyssal Whip"
const config = {
paramsSerializer: (params) => {
return querystring.stringify(params, { arrayFormat: 'brackets' });
},
params: {
where : {
name: item,
duplicate: false
}
}
}
axios.get("https://api.osrsbox.com/items", config).then( (resp) => {
[...]
})
这将导致以下请求:
https://api.osrsbox.com/items?where=%7B%22name%22:%22Abyssal%20Whip%22,%22duplicate%22:false%7D
我想知道我做错了什么。提前致谢。
PS:我正在从 Node.js 环境/服务器发出请求。
解决方案
这是您的 API 接受的一种非常奇怪的格式。但我想这是你必须使用的...
在我看来,通过将代码的相关部分更改为:
where: JSON.stringify({
name: item,
duplicate: false
})
(我希望您的示例请求中的空格不是必需的,如果是,那么这将不起作用)
推荐阅读
- android - 键盘打开后更改 EditText 焦点
- wordpress - 想要在 WordPress 网站的每个页面加载时使脚本保持不变
- terminal - 如何检测来自 QNX 中 ncurses 的屏幕调整大小事件?
- java - 如何修复输入字符串“0.40”的 NumberFormatException
- javascript - 如何保存/下载生成二维码客栈反应原生
- javascript - 过滤对象键和值
- angular - 声明一个数组 - Angular 4
- php - PHP分页显示项目的显示范围
- css - 表格中的响应式图像
- java - 在 Red Hat 中将 libxml 添加到 Eclipse 项目