RESTful设计:创建子资源的最佳实践

时间:2017-07-14 11:57:19

标签: rest restful-architecture

情景:

我有一些资源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的新实例。

Barhttp://resource/foo是否应支持直接与某些POST子项创建Foo,或者只应通过不同的Bar到{{初始创建POSTs后的{3}}

1 个答案:

答案 0 :(得分:-1)

不幸的是,这些问题没有共同的答案,因为您需要考虑业务领域和您的api正在处理的环境(性能,公共可用性,标准,现有端点的设计方式等)以及大量其他因素。但是,从业务角度出发是很好的,因为任何代码都旨在解决实际问题。

您可以先问自己以下问题:

  • Foo(作为真实世界的实体)在没有附加任何Bar的情况下是否合理?

或类似的东西:

创建Bar时<{1}}是否可选?

如果您看到它是可选的,请将Foo作为子资源,并独立处理Bar的集合/实例。只需使用hal添加Bar作为嵌入资源,这将非常Bar并使父子关系透明。保持资源尽可能简单且尽可能少耦合是RESTful api的好策略。