我将 physicalserver_id
字段添加到我的参数对象 (params
),然后发送 HTTP 请求:
var params = this.entityServer
params.extra_desc = JSON.stringify(this.entityServer.extra_desc)
params.physicalserver_id = undefined
debugger // there I have checked the `params.physicalserver_id`
this.$http.post('/api/xxx/add/', params).then( (response) => {
console.log(response, 'lml')
})
但是,我从后端收到错误,告诉我 physicalserver_id
字段是必需的。
在我的浏览器中,我检查请求负载:
发现没有physicalserver_id
。
如果我给出一个现有的号码:
params.physicalserver_id = 8
然后,问题就消失了。
<小时/>EDIT-1
我的问题是,在我的参数中我给出了physicalserver_id=undefined
,但是当我请求API时,请求负载不存在physicalserver_id
,请参阅我的快照.
最佳答案
这是 JSON.stringify()
的行为。
当你调用 this.$http.post('/api/xxx/add/', params)
时,前端系统(我猜你使用的是 Angular)将转换 params
通过 JSON.stringify()
转换为字符串。由于 params 是一个对象,因此最终结果字符串中将省略所有具有未定义值的字段。因此,请求负载中将缺少 physicalserver_id
字段。
引用MDN详细说明:
If undefined, a Function, or a Symbol is encountered during conversion it is either omitted (when it is found in an object) or censored to null (when it is found in an array).
正如@HMR评论的那样,您需要向API提供商咨询“如何发送空的physicalserver_id”。
关于javascript - HTTP 请求负载中未定义的参数属性将被清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50013765/