нульовий і відсутній ключ у відповіді API REST [закрито]


40

Скажіть у моїй заяві, деякі користувачі дають нам своє прізвище, а інші - ні. У відповіді REST API, який орган є кращим:

Зі значенням "null":

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

Або просто відсутній ключ:

{"firstName": "Bob"}

Відповіді:


31

Подумайте про видалення порожніх або нульових значень.

Якщо властивість не є обов'язковою або має порожнє або нульове значення, спробуйте скинути властивість з JSON, якщо тільки немає вагомих смислових причин його існування.

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

Подальше читання
Посібника зі стилю Google - Порожні або нульові значення властивостей
Чи повинні бути включені нульові значення у відповіді JSON з API REST?


дякую за посилання, Роберт. тож навіть якщо currentlyPlayingце буде в одних відповідях, а не в інших, бажано, щоб клієнт перевіряв, чи є ключ чи ні, а не перевіряти, чи недійсний він?
jtmarmon

nullі undefinedмають майже однакове значення у Javascript, і ви можете перевірити, чи обидва вони використовуютьсяif (myProperty == null)
Роберт Харві

насправді в моєму випадку клієнтом може бути java, aim-c або javascript. посилання у другому посиланні (API-craft) вказує мені, що null відповідає нашому випадку семантичного використання, але в основному я повинен просто прийняти рішення і дотримуватися його: P дякую ще раз
jtmarmon

Просте: Якщо програмі потрібно розрізняти різні значення, то сервер повинен надати різні значення, інакше це не потрібно і не повинно. Чи потрібно вашій програмі розрізняти ключ, який не присутній, ключ має значення порожнього рядка і ключ, що має нульове значення?
gnasher729

3
Відповідь на це повідомлення адреси деякі вагомі причини, чому ви не повинні видалити порожні поля.
Дейв Новий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.