null vs chiave mancante nella risposta API REST [chiuso]


41

Diciamo nella mia applicazione, alcuni utenti ci danno il loro cognome e altri no. In una risposta API REST, quale corpo è preferito:

Con un valore "null":

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

O solo una chiave mancante:

{"firstName": "Bob"}

Risposte:


31

Prendi in considerazione la rimozione di valori vuoti o nulli.

Se una proprietà è facoltativa o ha un valore vuoto o nullo, prendere in considerazione la possibilità di eliminare la proprietà dal JSON, a meno che non vi sia una forte ragione semantica per la sua esistenza.

{
  "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
}

Ulteriori letture
Guida allo stile di Google - Valori di proprietà vuoti o nulli
Dovrebbero essere inclusi valori nulli nelle risposte JSON da un'API REST?


grazie per il link, Robert. quindi anche se currentlyPlayingsarà presente in alcune risposte e non in altre, è preferibile che il client controlli se la chiave è presente o no piuttosto che verificare se è nulla?
jtmarmon,

nulle undefinedhanno quasi lo stesso significato in Javascript, e puoi controllare entrambi usandoif (myProperty == null)
Robert Harvey,

bene in realtà nel mio caso il client potrebbe essere java, object-c o javascript. il link all'interno del secondo link (API-craft) mi indica che null si adatta al nostro caso d'uso semantico, ma soprattutto che dovrei solo prendere una decisione e
attenermi

Semplice: se l'applicazione deve distinguere tra valori diversi, il server deve fornire valori diversi, altrimenti non è necessario e non dovrebbe. La tua app deve distinguere tra una chiave non presente, una chiave con una stringa vuota come valore e una chiave con valore null?
gnasher729,

3
La risposta in questo post affronta alcuni buoni motivi per cui non dovresti rimuovere i campi null.
Dave, nuovo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.