代码之家  ›  专栏  ›  技术社区  ›  sshine

使用Vue资源对多个查询参数进行编码,而不使用“[]”

  •  0
  • sshine  · 技术社区  · 7 年前

    我正在使用查询REST API vue-resource's $http.get 通过:

    this.$http.get('/api', {
        params: {
            id: [1,2,3],
        },
    });
    

    这就产生了查询

    /api?id[]=1&id[]=2&id[]=3
    

    但我的终点期望

    /api?id=1&id=2&id=3
    

    有办法告诉我吗 vue-resource 要像这样编码多个参数?

    我希望避免构造自己的查询字符串,但这是我能想到的另一种选择。

    1 回复  |  直到 7 年前
        1
  •  2
  •   aBiscuit    7 年前

    按查询参数的内部实现查找 serialize 功能 vue-resource ,我可以说是-no,无法在中自定义查询参数序列化函数。 虚拟专用资源 .

    no standard way 通过查询字符串传递一组值,因此格式更特定于框架。同时两者 虚拟专用资源 axios 默认情况下,使用括号格式来序列化数组,第二种格式允许通过 paramsSerializer 选择权。

    猜测,没有标准的主要原因是,在前端创建自定义函数来序列化查询参数非常容易。

    你可以使用 qs.js 解决问题的库

    qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
    

    或者下面是自定义函数的示例 another answer ,但根据您的请求进行了修改:

    JSFiddle

    推荐文章