大家都混得好好的,你咋这么突出
后端出了个接口(GET),文档写着入参是一个 ids,类型是 array[string]
前端按照文档,传入一个数组作为参数:
getList() { this.$http({ url: 'findList', params: { ids: [123, 124, 125] }, method: 'get' }).then((res) => {}) }
请求报 400,原因是 get 请求数组类型的参数,会被 qs 自动处理成这种格式:
http://xxx/xxx?ids[]=123&ids[]=124&ids[]=125
于是我换成字符串入参试一下
http://xxx/xxx?ids=123,124,125
请求成功
我以为是接口文档写错了,就跑去问后端,入参类型要不要改成 String,备注打上“多个 id 用,分割”
后端表示没写错,甩了个 curl,入参是 array[string]可以请求成功,我对比了一下,区别在这:
==报 400==:http://xxx/xxx?ids[]=123&ids[]=124&ids[]=125
==正常==:http://xxx/xxx?ids=123&ids=124&ids=125
如果要按照数组入参,前端需要做特殊处理:
getList() { this.$http({ url: 'findList', params: { ids: [123, 124, 125] }, method: 'get', // 处理 ⬇️ paramsSerializer: function (params) { return Qs.stringify(params, { arrayFormat: 'repeat' }) } }).then((res) => {}) }
前端感觉没必要
问后端文档入参类型能不能改成 String,防止后面时间久了业务忘了,看文档和代码对不上
后端表示要改前端自己改
前端就去改了
过了一会儿后端问前端:“你怎么这么执着”




个人感觉这种入参http://xxx/xxx?ids=123&ids=124&ids=125本身就很诡异
前端感觉对线没对好
晚点移黑洞



string 数组不应该是要这样吗? http://xxx/xxx?ids=["123","124","125 "]