前端Get方法传数组

前端传输标签数组至后端

Posted by Duu on October 30, 2023

前端配置

tags 上一个界面URL传递的数组 但形式是tag[]=’标签1’&tag[]=’标签2’无法正确发送给后端。

需要使用qs库进行转换成 tag=’标签1’&tag=’标签2’的形式。

onMounted(async() => {
  const res = await myaxios.get('/user/tag',{
    params: {
      tags: route.query.tags     
    },
  paramsSerializer: params => {
    return qs.stringify(params, {indices: false})  
    }
  })
  if (res.data) {
    res.data.forEach(user => {
      if (user.tags) {
        user.tags = JSON.parse(user.tags);
      }
    })
    userList.value = res.data;
  }
});
  1. paramsSerializer 是一个属性名,可能是用于配置一个 HTTP 请求库(比如 Axios)的选项。
  2. params => {...} 是一个箭头函数,它接受一个名为 params 的参数。在这段代码中,params 通常是一个包含了请求参数的 JavaScript 对象。
  3. qs.stringify(params, {indices: false})
    • qs 是一个用于处理 URL 查询参数的库。在这里,qs 库的 stringify 方法用于将一个对象序列化成一个 URL 查询字符串。
    • params 是要序列化的对象,它通常包含了请求参数。
    • {indices: false} 是一个配置选项,它告诉 qs 库不要在序列化数组时添加索引。例如,对于参数 {arr: [1, 2, 3]},如果索引为 true,会生成 arr[0]=1&arr[1]=2&arr[2]=3,而在这里设置为 false 后会生成 arr=1&arr=2&arr=3

总的来说,这段代码的作用是将一个包含了请求参数的 JavaScript 对象序列化成一个 URL 查询字符串,以便于在 HTTP 请求中传递参数。这通常用于配置一个 HTTP 请求库的参数序列化方式。

JSON.parse() 是 JavaScript 中用于解析 JSON 字符串的内置函数。它将一个合法的 JSON 字符串作为参数,并返回一个与该 JSON 字符串对应的 JavaScript 对象。

例如,如果 user.tags 的值是 '[{"id": 1, "name": "tag1"}, {"id": 2, "name": "tag2"}]',经过解析后会得到一个包含两个对象的数组。

javascriptCopy codeJSON.parse('[{"id": 1, "name": "tag1"}, {"id": 2, "name": "tag2"}]');
// 返回结果是一个包含两个对象的数组:
// [{id: 1, name: "tag1"}, {id: 2, name: "tag2"}]