考虑两个资源之间的下列关系
很明显,在这里,学院不是一流的资源。
现在,我需要用于后续操作的端点。
POST /faculties/PUT /college/1/faculties
GET /college/1/faculties:相关学院的列表。每个url都将包含一个类似于/faculties/1的自url。DELETE /college/1/faculties/1:url看起来更好,但是如何公开这个url呢?
PUT /college/1/faculties,接受这所学院的全部学院的名单。
DELETE /sectors/1:看起来不错,但需要处理/faculties/1/sectors的缓存。
在这种情况下,有什么更好的方法呢?我读过关于公开会员资源的文章,但是如果一所学院有10个学院,则需要10个单独的http调用才能从会员中获得所有这些资源。
此外,这只是整个关系树的一小部分。为了进一步扩展这一点,假设系统已经
此外,在RESTful体系结构中,客户端不应该填充URL。
有什么建议吗?
发布于 2015-03-24 17:38:37
我在过去写过一篇关于OData如何实现这些方面的文章(特性“导航属性”)。请参阅以下链接:https://templth.wordpress.com/2014/12/08/updating-data-links-of-odata-v4-services-with-olingo/。
另一个链接还可以给您一些有趣的提示,因为它在结尾描述URL和相应的有效载荷:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/entity-relations-in-odata-v4。
我认为有两种情况可以使请求的数量最小化:使用引用或提供内容。我的意思是,如果资源检测到(基于内容或自定义标题)发送的内容,那么它就知道它是否只需要处理引用(附件)或内容(创建和附件)。
我会看到以下可能的多重基数请求(大学->学院):
POST /faculties/:增加一名没有附属于大学的教师POST /college/1/faculties:为一所大学配备一名教师,如果不存在,最终创建它(根据发送的内容)DELETE /college/1/faculties/?ref=/faculties/1将教师从学院中分离出来你也可以考虑的是在教职员工中提到学院(请求POST /faculties)。这样您就可以在元素的创建过程中附加元素。
否则,PUT /college/1/faculties的目标是替换整个表示,因此所有附属于某一特定学院的学院。
您还可以使用POST或修补程序方法来减少请求的数量。您可以查看这些答案以获得更多细节:REST API - Bulk Create or Update in single request和How to Update a REST Resource Collection。这种方法允许您在一个调用中创建元素,然后附加它们。它允许收集对元素的处理。
希望我说清楚了,这对你有帮助,蒂埃里
https://stackoverflow.com/questions/29237255
复制相似问题