post请求 content-type: application/x-www-form-urlencoded,传参如果某个属性值为空对象,这个属性会被忽略,没有被携带进行请求
在application/x-www-form-urlencoded
类型的 POST 请求中,如果某个属性的值是空对象{}
,这个属性会被忽略,不会被携带进行请求。这是因为application/x-www-form-urlencoded
格式的请求体是由一系列键值对组成的,每个键值对之间用&
分隔,键和值之间用=
分隔。如果某个属性的值是空对象,那么在转换为字符串时,这个键值对就没有值,因此会被忽略。
例如,假设你有一个对象{ name: 'John', age: {}, address: '123 Main St' }
,在转换为application/x-www-form-urlencoded
格式时,它会变成 name=John&address=123%20Main%20St,因为 age 的值是空对象,所以它被忽略了。
如果你希望即使属性的值是空对象也能被携带进行请求,你可以在发送请求之前检查并处理这些空对象。例如,你可以将空对象转换为一个特定的字符串,如null
或""
,这样它们就会被包含在请求体中。
const data = { name: 'John', age: {}, address: '123 Main St' };
// 将空对象转换为字符串 "null"
for (const key in data) {
if (typeof data[key] === 'object' && Object.keys(data[key]).length === 0) {
data[key] = 'null';
}
}
// 现在 data 变成了 { name: 'John', age: 'null', address: '123 Main St' }
// 发送请求...
这样,即使age
的值是空对象,它也会被转换为字符串"null"
,并包含在请求体中。