首页 > 解决方案 > 以对象为参数的 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 环境/服务器发出请求。

标签: javascriptnode.jsresthttpaxios

解决方案


这是您的 API 接受的一种非常奇怪的格式。但我想这是你必须使用的...

在我看来,通过将代码的相关部分更改为:

where: JSON.stringify({
    name: item,
    duplicate: false
}) 

(我希望您的示例请求中的空格不是必需的,如果是,那么这将不起作用)


推荐阅读