chave nula vs ausente na resposta da API REST [fechada]


40

Digamos no meu aplicativo, alguns usuários nos dão seu sobrenome e outros não. Em uma resposta da API REST, qual corpo é preferido:

Com um valor "nulo":

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

Ou apenas uma chave ausente:

{"firstName": "Bob"}

Respostas:


31

Considere remover valores vazios ou nulos.

Se uma propriedade for opcional ou tiver um valor vazio ou nulo, considere retirar a propriedade do JSON, a menos que haja uma forte razão semântica para sua existência.

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

Leitura adicional
Guia de estilo do Google - Valores de propriedade vazios ou nulos Os valores
nulos devem ser incluídos nas respostas JSON de uma API REST?


obrigado pelo link, Robert. mesmo securrentlyPlaying haja algumas respostas e não outras, é preferível que o cliente verifique se a chave está lá ou não, em vez de verificar se é nula?
Jtmarmon

nulle undefinedtêm quase o mesmo significado em Javascript, e você pode verificar os dois usandoif (myProperty == null)
Robert Harvey

bem, na verdade, no meu caso, o cliente pode ser java, objetivo-c ou javascript. o link dentro do segundo link (API-craft) indica para mim que nulo se encaixa em nosso caso de uso semântico, mas principalmente que devo tomar uma decisão e cumpri-lo: P, obrigado novamente
jtmarmon

Simples: se o aplicativo precisar distinguir entre valores diferentes, o servidor deverá fornecer valores diferentes, caso contrário, ele não precisa e não deve. Seu aplicativo precisa distinguir entre uma chave que não está presente, uma chave tem uma string vazia como valor e uma chave com um valor nulo?
gnasher729

3
A resposta nesta postagem aborda algumas boas razões para você não remover os campos nulos.
Dave New
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.