繁体   English   中英

具有多个公司或组织的系统的REST API设计

[英]REST API Design for systems with multiple companies or organizations

我看到的大多数示例都实现了REST URL模式,例如http://www.app.com/books/1来访问ID为1的书,或者使用http://www.app.com/books来访问所有书。

很好,但是通常我会开发支持多个公司的应用程序。 例如,公司ABC有2个用户,公司DEF有2个用户。 ABC公司的用户创建了一本ID为100 现在,当来自DEF公司的用户打来RESTful呼叫时:

http://www.app.com/books/100

需要有一个访问异常,或者

http://www.app.com/books

只会列出所有属于DEF的图书(而不是ID为100的新图书)。 对于许多实体(例如Book),公司ID是表的一部分,但对于其他实体却并非如此。 例如,如果某本书中的一个章节( http://www.app.com/chapter/333进行了REST操作,则该章节表将具有对该书的外键引用,而不是该公司的外键引用。

管理该资源访问的最佳实践是什么? 如果来自DEF的某人试图访问ABC的章节,则必须构造一个查询以将该章节加入书中,以验证公司ID是否有效。

我正在使用Grails 3.x,其中大多数逻辑都是抽象的,并且认为“自动”发生。 因此,将自动返回用于特定书本ID的URL,并且列出所有书本的请求将返回数据库中的每本书。 看来,要继续进行下去,我可能必须覆盖大多数这种自动功能并实现我自己的安全性,也许是在服务层中,在该层中,公司ID是每个操作的必需参数。 听起来合理吗?

是否存在针对此类事情的既定最佳实践?

不知道它是否适合您的需求,但是有趣的是,有一个Burt Beckwith编写的ACL插件:

Spring Security ACL插件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM