Estoy tratando de enviar una solicitud HTTP PUT a una API que acepta un objeto JSON en su cuerpo. Todo funciona bien, excepto si quiero establecer una propiedad del cuerpo en undefined , esa propiedad se eliminará por completo del objeto de respuesta (como si llamara al operador de delete para esa propiedad). Revisé y puedo confirmar que el accesorio dado está allí, con el valor de undefined siempre que el objeto se pase a httpClient.put() .
¿Alguien sabe por qué sucede esto? ¿Es este un comportamiento esperado para el cliente http o hay un error en alguna parte?
El comportamiento que describe es el comportamiento esperado de HttpClient . En realidad, es el comportamiento de JSON.stringify() que HttpClient usa detrás de escena.
A diferencia de JavaScript, JSON no tiene el concepto de undefined . Si algo no está definido, simplemente no está definido. No existe en absoluto. Entonces, cuando JSON.stringify() obtiene un objeto con una propiedad que es igual a undefined , lo omite.
Si necesita esta propiedad en el cuerpo de su solicitud, intente cambiar su valor a null , cadena vacía o cero (dependiendo de su lado del servidor).