[英]How to design REST API for SaaS with multiple “companies” per account
[英]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插件:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.