HATEOAS API对象设计

时间:2014-12-29 15:05:03

标签: api rest hateoas

当POST对象可能与同一资源的GET对象不同时,使用实用hateoas的当前最佳做法是什么?例如,以下是不好的API设计吗?

  1. 对于资源/families,客户可以发布新系列,并在同一请求中包含多个"members":[]

  2. /members也是一种资源

  3. 如果POST或GET成功,服务器将返回一个包含不同“系列”对象的对象,以包含链接:

    {
    "id": 123,
    "name": "The Adams Family",
    "_links": {
     "members": { "href": "/families/123/members" }
    }
    

1 个答案:

答案 0 :(得分:0)

我认为在这种情况下使用嵌套资源会更好,例如在HAL + JSON:

{
    "id": 123,
    "name": "The Adams Family",
    "_embedded": {
        "members": {
            "_links": {
                "self": {
                    "href": "/families/123/members"
                }
            }
        }
    }
}

我认为您的解决方案也没问题,但您必须在文档中定义成员链接关系,因此客户(及其开发人员)将知道“成员”意味着家庭成员,而不是任何成员集合(例如,hydra定义集合项的成员属性,schema.org定义组织成员的成员属性)。