我正在设计和开发RESTful API。我采用了一种实用的,面向资源的API方法(面向资源,统一的接口,可寻址性,但没有真正的HATEOAS)。但我不确定的一点是如何在对象中接近空值。
我应该在API响应中包含空值的字段吗?
示例:
{
"fieldA": "AAA",
"fieldB": null
}
或者,如果系统没有这些字段的数据,我是否应该完全忽略这些字段?
示例:
{
"fieldA": "AAA"
}
答案 0 :(得分:21)
最近在API-Craft上就此进行了讨论。普遍的共识是,值的省略与包含空值之间可能存在语义差异。
如果没有为您的特定用例获取语义值,那么我会说看看API的目标消费者,并考虑是否省略该值会导致问题。
答案 1 :(得分:6)
没有明显的赢家。而且由于没有,客户永远不应该在技术上依赖任何关于此的约定,客户不应该期待任何形式。
?fields=foo,bar
引发的部分响应,其中所有其他字段的返回空值似乎有点违反直觉