clave nula vs falta en la respuesta REST API [cerrado]

41

Digamos que en mi solicitud, algunos usuarios nos dan su apellido y otros no. En una respuesta REST API, qué cuerpo se prefiere:

Con un valor "nulo":

{"firstName": "Bob",
 "lastName": null}

O simplemente una clave faltante:

{"firstName": "Bob"}
jtmarmon
fuente

Respuestas:

31

Considere eliminar valores vacíos o nulos.

Si una propiedad es opcional o tiene un valor vacío o nulo, considere eliminar la propiedad del JSON, a menos que haya una razón semántica fuerte para su existencia.

{
  "volume": 10,

  // Even though the "balance" property's value is zero, it should be left in,
  // since "0" signifies "even balance" (the value could be "-1" for left
  // balance and "+1" for right balance.
  "balance": 0,

  // The "currentlyPlaying" property can be left out since it is null.
  // "currentlyPlaying": null
}

Lecturas adicionales
Guía de estilo de Google: valores de propiedad vacíos o nulos
¿Deberían incluirse valores nulos en las respuestas JSON de una API REST?

Robert Harvey
fuente
gracias por el enlace, Robert. así que incluso si currentlyPlayingestará en algunas respuestas y no en otras, ¿es preferible que el cliente verifique si la clave está allí o no en lugar de verificar si es nula?
jtmarmon
nully undefinedtiene casi el mismo significado en Javascript, y puede verificar ambos usandoif (myProperty == null)
Robert Harvey
Bueno, en realidad en mi caso el cliente podría ser Java, Objective-C o JavaScript. el enlace dentro del segundo enlace (API-craft) me indica que nulo se ajusta a nuestro caso de uso semántico, pero sobre todo que debería tomar una decisión y
apegarme
Simple: si la aplicación necesita distinguir entre diferentes valores, entonces el servidor debe proporcionar diferentes valores, de lo contrario no es necesario y no debería. ¿Su aplicación necesita distinguir entre una clave que no está presente, una clave tiene una cadena vacía como valor y una clave que tiene un valor nulo?
gnasher729
3
La respuesta en esta publicación aborda algunas buenas razones de por qué no debe eliminar los campos nulos.
Dave New