簡體   English   中英

以對象為參數的 Axios GET 請求(來自后端)

[英]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”

  1. npm i qs

  2. 制作一個包含所有請求正文參數的對象,例如 -

const requestBody = {

......;

}

  1. 現在在提出 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM