我正在構建一個Backbone應用程序,該應用程序顯示來自特定技術手冊的圖表的交互式傳真。每個手冊都有許多圖表類型(比如A-Z),分佈在其頁面上。每個圖表可能在頁面上出現多次,有時單個頁面可能包含給定圖表類型的多個實例。路徑參數的REST API URL模式
我有一個Django後端服務於我的前端使用的REST API。我一直在努力的是該請求的網址設計。我嘗試了幾種模式,其中沒有一種能讓我滿意。我的Django的模型看起來是這樣的:
class Diagram(models.Model):
type = models.CharField(max_length=1)
page = models.IntegerField(default=1)
order = models.IntegerField(default=1)
data = JSONField(default='{}')
的order
領域涉及的情況下,有一個頁面上指定的圖表類型的多個實例。這個模型的表是隻讀的,所以我只是在做簡單的GET
s。用戶一次只能查看一個圖表實例。按照類型,頁面和(相關)順序選擇圖表。我最初的URL設計是這樣的:
example.org/api/diagrams/A/pages/1/order/2/
雖然有多個圖表,該diagrams
PARAM暗示的集合 - 但是圖並不「包含」頁面。與pages
param一樣。顯然order
只能是單數。因此,或許:
example.org/api/diagrams/type=A/page=1/order=2/
或許只是去與查詢參數:
example.org/api/diagrams/?type=A&page=1&order=2
我個人比較喜歡的路徑參數,但這樣做的主要併發症是,order
參數是實際上是多餘的大部分時間 - 在頁面上只有少數幾個重複圖的情況(目前我默認order
爲'1',無論是在後端還是在請求中)。因此,也許路徑和查詢參數的組合:
example.org/api/diagrams/A/page/1/?order=2
這是一個很好的模式?我可以考慮其他選擇嗎?
編輯:一些額外的閱讀(特別是URI Standard)之後,我覺得的答案是一個路徑參數設計適合於層次結構...這似乎直觀。但我沒有,所以正確的候選人是純粹的查詢參數設計。對?
非常感謝你對此的見解,他們非常感謝。 – ChrisM