资源的null嵌套属性的正确响应是什么

时间:2015-11-19 16:48:20

标签: api rest restful-architecture http-response-codes

在专门返回Json的API上考虑这些端点:

  • GET /cities/{id}/stores
  • GET /cities/{id}/mayor

storemayor都是可以拥有自己标量属性的对象。

city->stores关系是一对多关系,但city->mayor关系是一对一关系。在这两种情况下,结果都可以为空。

我同意

当具有该ID的资源不存在时,

GET /stores/{id}GET /cities/{id}GET /mayors/{id}应返回404。

但是,如果某个城市没有商店,那么我希望GET cities/{id}/stores返回[]

我的问题是,鉴于一个城市没有现任市长,应该做什么 GET /cities/{id}/mayor返回?

1 个答案:

答案 0 :(得分:1)

如果未设置给定城市的市长并且它与一对一关系存在,则应返回404状态代码。

返回null值没有意义 - 因为API消费者不知道如何应对此值。

另一种选择是将此端点从 mayor 更改为 mayors 并始终返回空集合或集合中的一个条目 - 但这不是一个好主意,应该很好记录在案,总的来说,我很遗憾,我建议它;)

您也可以将市长嵌入城市,然后在返回的JSON中将其值设置为null(如果不存在)。