使用axios
向该API发送请求时遇到很多麻烦,该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环境/服务器发出请求。
答案 0 :(得分:0)
这是您的API接受的一种非常奇怪的格式。但是我想这就是您必须使用的...
在我看来,将代码的相关部分更改为:
where: JSON.stringify({
name: item,
duplicate: false
})
(我希望您的示例请求中的空格不是必需的,否则将无法使用)
答案 1 :(得分:-1)
您必须使用npm软件包“ qs”
npm i qs
创建一个包含所有请求正文参数的对象,例如-
const requestBody = {
.......;
}
现在正在发出Axios请求-
Axios.get(“ https://api.osrsbox.com/items”,qs.stringyfy(requestBody),config) .then(res => console.log(res) .catch(err => console.log(err))