簡體   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