[英]Axios GET request (from backend) with object as parameter
我在使用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
})
(我希望您的示例請求中的空格不是必需的,如果是,那么這將不起作用)
你必須使用 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) ))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.