在设计RESTful API时,是否应将依赖于其他资源的资源建模为子资源,还是应该简单地相互引用?
例如,假设一扇门总是依赖于房屋
/house/73/door/1
Run Code Online (Sandbox Code Playgroud)
要么
/house/73
/door/1044
Run Code Online (Sandbox Code Playgroud)
房子和门是否包含彼此的引用?
我发现的大多数RESTful API都非常扁平,所以我会重视对任何具有更复杂关系依赖性的引用.
问候
Dar*_*ler 13
请记住,URI是服务器的实现细节.如果您可以将它们建模为平坦资源,那么就这样做.服务器处理它们会更容易.
如果门的标识符并非在所有房屋中都是唯一的,那么您的服务器将需要知道房屋,因此您需要将房屋包含在URI中.
资源之间的关系应该由返回的表示中的链接建模.即您的房屋代表应该包含该房屋所有门资源的链接.我建议尽量避免使用URL结构具有某些域名含义.
如果需要唯一标识资源,则仅使用层次结构.
Don*_*ows 13
在UML术语中,如果关系是Aggregation的关系,那么你使用带有事物之间链接的平面层次结构,而如果关系是Composition的关系(即a的生命周期door严格受a的生命周期限制house),则使用sub -resources.
我不是建议绘制UML图!但它确实有助于记住这种区别.(您还可以通过将子资源重定向到真实的子资源来建模聚合案例;重定向是 RESTful.OTOH,我实际上并不喜欢这样做;我更喜欢将任何关系显式化并保持数量重定向.)
| 归档时间: |
|
| 查看次数: |
3438 次 |
| 最近记录: |