前言
将数组传给后端,一般放在POST请求的data中
// api.jsexport function PostData(params,data) {return request({url: `id/${params.id}/`,method: 'POST',data})}
但总有些后端会一不小心会把接口写错,将数组放在GET请求的param中,那么这时你可能会让后端把接口改成POST,其实还有一种解决方法,将数组参数转为用&连接的字符串,举个例子
将k=[1,2,3]
转为k=1&&k=2&&k=3
,这不就是扁平化数组吗?
封装api时,我们在paransSerializer对params进行处理,将数组转为许多个字符串
// api.jsexport function GetData(params){return request({url:`/id/${params.id}`,method:'GET',params,paramsSerializer: function (params) {let result = [];for (let field in params) {if (params[field] === undefined || params[field] === null) {result.push(`${field}=`);continue}if (Array.isArray(params[field])) {result.push(params[field].map(_ => `${field}=${_}`).join("&"));} else {result.push(`${field}=${encodeURIComponent(params[field])}`);}}return result.join("&");} })}