解决url参数传递嵌套对象的问题

我希望前端可以通过url传递嵌套的对象,如

axios({
        url: '/api/user/list',
        method: 'get',
        params: {
          username: 'zs',
          helpParam: {
            beginCreateTime: '2025-06-26',
            endCreateTime: '2025-06-28'
          }
        }
      })

这个helpParam是帮我传递一些不定参数的对象,但是这样写实际上会被转化为/api/user/list?username=zs&helpParam[beginCreateTime]=2025-06-26&helpParam[endCreateTime]=2025-06-28,

但是url是不支持[]这种字符的

代码解决方案

下载qs,配置参数到url的序列化(qs.stringify()将对象转为url形式,qs.parse()将url字符串转为对象形式)

npm i qs
或者
cnpm i qs
或者
yarn add qs

引入qs,配置paramsSerializer

import axios from "axios";
import qs from 'qs';
sendParamsRequest() {
    axios({
        url: '/api/user/list',
        method: 'get',
        paramsSerializer: function (params) {
            return qs.stringify(params, { indices: false })
        },
        params: {
            username: 'zs',
            helpParam: {
                beginCreateTime: '2025-06-26',
                endCreateTime: '2025-06-28'
            }
        }
    })
}

手动输入url解决方案

[]想要出现在url中,需要进行url编码,%作为转移符号,[ -> 5B ,] -> 5D,

测试网址:在线url网址编码、解码(ES JSON在线工具)

因此之前的url可以写为

/api/user/list?username=zs&helpParam%5BbeginCreateTime%5D=2025-06-26&helpParam%5BendCreateTime%5D=2025-06-28

完整的url

http://localhost:8080/user/list?username=zs&helpParam%5BbeginCreateTime%5D=2025-06-26&helpParam%5BendCreateTime%5D=2025-06-28

这样写是可以被浏览器输入栏输入的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值