zoukankan      html  css  js  c++  java
  • get请求数组参数问题(序列化)

    问题:

    当我们需要通过get方式传递一个数组作为参数 tag:[1,2,3,4]

    预期是解析为:https://www.cnblogs.com/enter?tag=1&tag=2&tag=3&tag=4

    然而真相是这样的:https://www.cnblogs.com/enter?tag[]=1&tag[]=2&tag[]=3&tag[]=4,后台是不可能解析到传递的参数。

    解决方法

    1、qs插件处理

    1、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
    // 输出结果:'a[0]=b&a[1]=c'
    2、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
    // 输出结果:'a[]=b&a[]=c'
    3、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
    // 输出结果:'a=b&a=c'
    4、qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'comma' })
    // 输出结果:'a=b,c'

    2、使用URLSearchParams方式

    let params = new URLSearchParams()
     params.append('ids','1')
     params.append('ids','2')
    
    //输出结果ids=1&ids=2

    3、Axios配置

    axios.interceptors.request.use(async (config) => {
    //只针对get方式进行序列化
     if (config.method === 'get') {
       config.paramsSerializer = function(params) {
         return qs.stringify(params, { arrayFormat: 'repeat' })
       }
     }
    }

    4、小程序

     let urlQueryString = qs.stringify(options.params, {   //使用到qs ,先下载,后引入
          addQueryPrefix: true,
          allowDots: true,
          arrayFormat: 'repeat'
        });
        myUrl += urlQueryString;
    看繁华,听风落
  • 相关阅读:
    Python学习笔记第二十三周(Flask架构)
    Python学习笔记第二十二周(前端知识点补充)
    Python学习笔记第二十一周
    Python学习笔记第二十周
    Python学习笔记第十九周
    Python学习笔记第十八周
    Python学习笔记第十七周
    Python学习笔记第十六周
    python完成九九乘法表
    python
  • 原文地址:https://www.cnblogs.com/lgnblog/p/15628640.html
Copyright © 2011-2022 走看看