数据对象转换成url地址参数格式
- 需要先将数据对象转换成url地址参数格式;
- 再将其AES加密;
- 将其和baseURL拼接。
function objectToQuery() {
let obj = arguments[0];
let prefix = arguments[1];
if (typeof obj !== "object") return "";
const attrs = Object.keys(obj);
return attrs.reduce((query, attr, index) => {
// 判断是否是第一层第一个循环
if (index === 0 && !prefix) query += "?";
if (typeof obj[attr] === "object") {
const subPrefix = prefix ? `${prefix}[${attr}]` : attr;
query += this.objectToQuery(obj[attr], subPrefix);
} else {
if (prefix) {
query += `${prefix}[${attr}]=${obj[attr]}`;
} else {
query += `${attr}=${obj[attr]}`;
}
}
// 判断是否是第一层最后一个循环
if (index !== attrs.length - 1) query += "&";
return query;
}, "");
}
// 测试效果
let data = {
a: 1,
b: 2,
c: 3,
d: {
e: 5,
f: 6
},
}
console.log(objectToQuery(data)); // ?a=1&b=2&c=3&d[e]=5&d[f]=6
console.log(objectToQuery(data.d, "d")); // d[e]=5&d[f]=6