簡體   English   中英

正確的ReST URI設計

[英]Correct ReST URI design

我有以下(假設)場景:

申請報告學校班級學生情況。 我有3桌學校,班級,學生。 班級有FK school_id,學生有FK class_id。

我已經設置好實體並准備就緒,並且我將通過Rest界面公開它們。

我的URI應該看起來像這樣:學校-學校列表
學校/ {id}-特定學校
學校/ {id} /課程-課程列表
學校/ {id} /班級/ {id}-特定班級
學校/ {id} /班級/ {id} /學生-列出學生
學校/ {id} /班級/ {id} /學生/ {id}-特定學生

即使在特定學生的情況下,我也將忽略它,而我將忽略學校ID和班級ID,因為我只關心查詢的是學生ID。

我應該擁有:學校/學生/ {id}-針對特定學生。

從多個位置公開資源沒有問題(盡管如果有多個位置,則指定規范的URL是一個好主意*)。

因此,提供以下所有URI可能是有意義的:

lists:

student
classes/{id}/student
schools/{id}/classes/{id}/student

specific:

student/{id}
classes/{id}/student/{id}
schools/{id}/classes/{id}/student/{id}

在您的情況下,實體之間的關系不是實體本身。 如果是這種情況(例如,如果您的資源班級學生具有指定學生上課時間的屬性),則包含classstudent ID的URI變得更加重要,因為它們提供了一個很好的位置公開關系本身的屬性。

*為了最好地向客戶端提供規范的url,您可以將其作為響應標題中“ Content-Location”的值進行發送。

同樣,使用復數/單數名稱的約定也很有用。 有些人只喜歡單數名稱,有些人(例如Ruby人)同時使用這兩種名稱和轉換工具。 例如,在Ian的答案中, student列表URL必須是students

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM