null và khóa bị thiếu trong Phản hồi API REST [đã đóng]


40

Nói trong ứng dụng của tôi, một số người dùng cung cấp cho chúng tôi họ của họ và những người khác thì không. Trong phản hồi API REST, phần thân nào được ưu tiên:

Với giá trị "null":

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

Hoặc chỉ là một khóa bị thiếu:

{"firstName": "Bob"}

Câu trả lời:


31

Xem xét loại bỏ các giá trị rỗng hoặc null.

Nếu một thuộc tính là tùy chọn hoặc có giá trị trống hoặc rỗng, hãy xem xét bỏ thuộc tính khỏi JSON, trừ khi có lý do ngữ nghĩa mạnh cho sự tồn tại của nó.

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

Đọc thêm
Hướng dẫn về Phong cách của Google - Các giá trị thuộc tính trống hoặc rỗng Không
nên đưa các giá trị null vào các phản hồi JSON từ API REST?


cảm ơn vì liên kết, Robert. Vì vậy, ngay cả khi currentlyPlayingsẽ có một số phản hồi và không phải là phản hồi khác, bạn vẫn nên kiểm tra xem khách hàng có khóa hay không thay vì kiểm tra xem nó có rỗng không?
jtmarmon

nullundefinedcó ý nghĩa gần như giống nhau trong Javascript và bạn có thể kiểm tra cả hai bằng cách sử dụngif (myProperty == null)
Robert Harvey

thực sự trong trường hợp của tôi, máy khách có thể là java, object-c hoặc javascript. liên kết trong liên kết thứ hai (API-craft) cho tôi biết rằng null phù hợp với trường hợp sử dụng ngữ nghĩa của chúng tôi, nhưng chủ yếu là tôi chỉ nên đưa ra quyết định và kiên quyết với nó: P cảm ơn một lần nữa
jtmarmon

Đơn giản: Nếu ứng dụng cần phân biệt giữa các giá trị khác nhau, thì máy chủ phải cung cấp các giá trị khác nhau, nếu không thì không cần và không nên. Có phải ứng dụng của bạn cần phân biệt giữa một khóa không có mặt, một khóa có một chuỗi rỗng là một giá trị và một khóa có giá trị null?
gnasher729

3
Câu trả lời trong bài đăng này giải quyết một số lý do chính đáng là tại sao bạn không nên xóa các trường null.
Dave New
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.