我正在设计和开发 RESTful API。我对 API 采取了一种务实的、面向资源的方法(面向资源、统一接口、可寻址性,但没有真正的 HATEOAS)。我不确定的一点是如何处理对象中的空值。
我应该在 API 响应中包含具有空值的字段吗?
例子:
{
"fieldA": "AAA",
"fieldB": null
}
或者,如果系统没有这些字段的数据,我应该完全忽略这些字段吗?
例子:
{
"fieldA": "AAA"
}
最近在API-Craft上有一个关于这个的讨论。普遍的共识是,省略一个值与包含一个空值之间可能存在语义差异。
如果没有为您的特定用例获得语义价值,那么我会说看看您的 API 的目标消费者,并考虑省略该值是否会给他们带来问题。
没有明确的赢家。因为没有,客户在技术上不应该依赖任何关于这个的约定,客户不应该期望任何一种形状。
?fields=foo,bar
为所有其他字段返回空值的情况触发的部分响应似乎有点违反直觉