世纪话题Get参数传数组
哎呀,这个话题,其实挺简单的,但是仔细想起来,URL的请求参数如下,如果要写数组怎么办?
a=1&b=2&c=3
其实无非是解析这个字符串,但是由于没有标准方案,所以大家的处理方法五花八门。我遇到过的方式如下
数组标识
a[1]=1&a[2]=2
或者
a[]=1&a[]=2
这种做法,jquery时代很多,可以很简单分辨出数组,但是取到数据的时候要单独处理key,因为直接取到的值是a[]
序列化
a=%5B1%2C2%5D
少说废话,直接stringify,然后发现URL里面要转义的东西太多了,然后后端取到值还要parse下,因为传来个字符串
分隔符分割
a=1%2C2
莫不如加个,
处理下?缺点,找错分隔符的话还是要处理转义,后端还是要单独split下
其实有标准的
a=1&a=2
如此生成的URLSearchParam对象(类似于Map对象),直接调用get('a')
方法只会取到一个值,但是执行getAll('a')
可以获取到数组
既然是标准,koa的koa-qs也是这么处理数组的。
另外URLSearchParam还有一定容错能力,所以即使url被浏览器截断(其实不太会,因为此时报错414)也不会有太大问题。