情景:
我有一些资源Foo
,它有0..n子资源Bar
。
有一个端点 - http://resource/foo - 支持GET
获取所有Foo
资源的列表,POST
在父服务器上创建新的Foo实例
有一个端点 - http://resource/foo/:fooId: - 支持GET
获取Foo
资源,PATCH
更新Foo
资源,{{ 1}}删除DELETE
资源。
有一个端点 - http://resource/foo/:fooId:/bar - 支持Foo
获取给定GET
上所有Bar
资源的列表,并Foo
来创建给定Foo上的POST
的新实例。
Bar
至http://resource/foo是否应支持直接与某些POST
子项创建Foo
,或者只应通过不同的Bar
到{{初始创建POSTs
后的{3}}
答案 0 :(得分:-1)
不幸的是,这些问题没有共同的答案,因为您需要考虑业务领域和您的api正在处理的环境(性能,公共可用性,标准,现有端点的设计方式等)以及大量其他因素。但是,从业务角度出发是很好的,因为任何代码都旨在解决实际问题。
您可以先问自己以下问题:
Foo
(作为真实世界的实体)在没有附加任何Bar
的情况下是否合理?或类似的东西:
创建Bar
时<{1}}是否可选?
如果您看到它是可选的,请将Foo
作为子资源,并独立处理Bar
的集合/实例。只需使用hal添加Bar作为嵌入资源,这将非常Bar
并使父子关系透明。保持资源尽可能简单且尽可能少耦合是RESTful
api的好策略。