前端传参如果参数过多你还会拼接在URL上嘛?

当然除了 '+' 拼接你也可以用模版字符串的方式,相对来说可能要好一些,但是如果字段太多的话,还是不太方便,所以这里介绍一种其他的方式,比如qs

qs是npm仓库所管理的包,可以通过npm install qs安装,因此我们可以直接通过require('qs')引用得到,qs.stringify()作用是将对象或者数组序列化成URL的格式。那么这句话是什么意思呢?

我们先来看一下官方的用法

Usage

js 复制代码
var qs = require('qs');
var assert = require('assert');

var obj = qs.parse('a=c');
assert.deepEqual(obj, { a: 'c' });

var str = qs.stringify(obj);
assert.equal(str, 'a=c');

非常简单,直接引入然后通过qs.stringify() ,qs.parse() 就可以了。

下面我们举两个例子:

  • 对象序列化
vbnet 复制代码
let obj = {
methods: 'query_num'
id: 1,
name: 'Lisa'
}
qs.stringify(obj)
//   methods=query_stu&id=1&name=chenchen    这就是我们的传到服务器的url
  • 数组序列化
css 复制代码
let arr = [1,3]
qs.stringify({a:arr})
// 'arr[0]=1&arr[1]=3'

这种格式可以进行转为序列化,但是url中会带有数组的下标a[0]、a[1],这并不是我们一般的处理办法。常用方法如下:

php 复制代码
// 常用并推荐使用
let arr = [1,3]
qs.stringify({a:arr},{indices:false});
// 'arr=1&arr=3' 这个格式,是比较常用的格式

其中:indices:false,去除默认处理的方式。如果不写这个的话,则默认是第一种处理的方式(带下标)。

qs.parse()则就是反过来的,将我们通过qs.stringify()序列化的对象或者数组转回去。

bash 复制代码
let url = 'id=1&name=chenchen'
qs.parse(url)
// {id:1,name:chenchen}  

接下来看一个实例:

php 复制代码
// 根据业务id查询业务费用列表
export function commonBuzCostPage(params) {
  return request({
    url: `/departmentCost/commonBuzCostPage`,
    method: 'get',
    params,
    paramsSerializer: params => {
      return qs.stringify(params, {
        indices: false
      })
    }
  })
}
javascript 复制代码
fetch(`${apiurl}/projiects?${qs.stringify(param)}`) 
.then(async response =>{
    if (response.ok){
        setList(await response.json())
        }
    })
相关推荐
去码头整点薯条9829 分钟前
python第五次作业
linux·前端·python
沐墨染1 小时前
Vue实战:自动化研判报告组件的设计与实现
前端·javascript·信息可视化·数据分析·自动化·vue
局外人LZ1 小时前
Uniapp脚手架项目搭建,uniapp+vue3+uView pro+vite+pinia+sass
前端·uni-app·sass
爱上妖精的尾巴2 小时前
8-5 WPS JS宏 match、search、replace、split支持正则表达式的字符串函数
开发语言·前端·javascript·wps·jsa
为什么不问问神奇的海螺呢丶2 小时前
n9e categraf redis监控配置
前端·redis·bootstrap
云飞云共享云桌面2 小时前
推荐一些适合10个SolidWorks设计共享算力的服务器硬件配置
运维·服务器·前端·数据库·人工智能
刘联其3 小时前
.net也可以用Electron开发跨平台的桌面程序了
前端·javascript·electron
韩曙亮3 小时前
【jQuery】jQuery 选择器 ④ ( jQuery 筛选方法 | 方法分类场景 - 向下找后代、向上找祖先、同级找兄弟、范围限定查找 )
前端·javascript·jquery·jquery筛选方法
前端 贾公子3 小时前
Node.js 如何处理 ES6 模块
前端·node.js·es6
pas1363 小时前
42-mini-vue 实现 transform 功能
前端·javascript·vue.js