【发布时间】:2015-11-18 00:42:22
【问题描述】:
我正在创建一个 REST API。其中,有一个名为company 的资源类型,它有很多属性/字段。
处理company资源时的两个常见用例是:
- 通过一个请求加载整个公司及其所有属性
- 更新公司的一组(相对较小的)属性,但不会同时更新所有属性
关于 API 的设计,我提出了两种不同的方法,需要从中选择一种(也许还有更好的方法,请随时发表评论):
1.使用子资源进行细粒度更新
由于可以将公司的属性分组(例如街道、城市和州代表地址...电话、邮件和传真代表联系信息等...),一种方法可以是使用以下路线:
/company/id:可以使用GET获取整个公司
/company/id/address:可用于更新地址信息(街道、城市...),使用PUT
/company/id/contact:可用于更新联系信息(电话、邮件...),使用PUT
等等。
但是:在像/company/id/address 这样的子资源上使用GET 永远不会发生。同样,更新/company/id 本身也永远不会发生(参见上面的用例)。我不确定这种方法是否遵循 REST 的想法,因为我使用不同的 URL 加载和操作相同的数据。
2。使用 HTTP PATCH 进行细粒度更新
在这种方法中,部分更新没有额外的路径。相反,只有一个端点:
/company/id:可用于使用GET 获取整个公司,同时使用PATCH 更新资源子集(地址、联系信息等)。
从技术角度来看,我很确定这两种方法都可以正常工作。但是,我不想以不应该使用的方式使用 REST。您更喜欢哪种方法?
【问题讨论】:
标签: web-services api rest http web