Angular 7 HTTP put strips out undefined 属性

Angular 7 HTTP put strips out undefined property

我正在尝试向 API 发送 HTTP PUT 请求,该请求在其正文中接受 JSON 对象。一切正常,除非我想将正文的一个道具设置为 undefined,该道具将从响应对象中完全剥离(就像我会为该道具调用 delete 运算符一样) .我检查了,我可以确认给定的道具在那里,只要对象传递给 httpClient.put().

,其值为 undefined

有人知道为什么会这样吗?这是 http 客户端的预期行为,还是某处存在错误?

您描述的行为是 HttpClient 的预期行为。实际上,HttpClient 在幕后使用的是 JSON.stringify() 的行为。

与JavaScript不同,JSON没有undefined的概念。如果某些东西是未定义的,它就是没有定义。它根本不存在。 所以,当 JSON.stringify() 得到一个 属性 等于 undefined 的对象时,它会忽略他。

如果您的请求正文中需要此 属性,请尝试将其值更改为 null、空字符串或零(取决于您的服务器端)。