首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将一个人的RESTful端点暴露给多个关系

将一个人的RESTful端点暴露给多个关系
EN

Stack Overflow用户
提问于 2015-03-24 15:55:05
回答 1查看 12.7K关注 0票数 11

考虑两个资源之间的下列关系

  • 学院有许多学院
  • 系属于学院

很明显,在这里,学院不是一流的资源。

现在,我需要用于后续操作的端点。

  • 在这所大学里建立一个新的教职员工--这个农场。一种在两个操作中这样做的可能方法。
    • 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。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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 requestHow to Update a REST Resource Collection。这种方法允许您在一个调用中创建元素,然后附加它们。它允许收集对元素的处理。

希望我说清楚了,这对你有帮助,蒂埃里

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29237255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档