[英]Best way to design a URI for REST API
我正在設計一個REST API,其功能與Facebook中的帖子和評論類似。
URI看起來像:
/posts/{post-id}/comments/{comment-id}
為了獲得所有注釋,我使用集合URI命名標准。 例如:
/posts/{post-id}/comments
但是當我需要對所有帖子發表評論時,我遇到了困難。 考慮到我只想對帖子和評論使用此設計,什么是最好的方法?
我必須在這里提到,我使用的資源與帖子和評論有些不同,在我的設計中,我將不得不使用帖子,而評論不能作為完全不同的實體。 很抱歉對於這個誤會。
話雖如此,建議以以下任何一種方式設計URI:
/posts//comments
/posts/"any-string"/comments
但是當我需要對所有帖子發表評論時,我遇到了困難。 請記住,我只想在帖子和評論中使用這種設計,這是結合這種方式的最佳方法。
HTTP包含重定向的概念-一種告訴客戶端將請求發送到其他資源的通用工具。
GET /714eeebd-d89e-4f13-b2a8-cf8a3ee03481 ...
307 Temporary Redirect
Location: /7604abf9-d4f5-42c7-b687-96dbff32649f
這意味着 ,如果您為URI選擇了錯誤的拼寫,則可以稍后對其進行更正。
REST的設計使得標識符是不透明的-除了服務器之外,沒有人應該從中提取信息。
另外,請記住,資源不是域實體-通常擁有比域對象更多的資源 。 域模型中的任何給定帖子可能都有許多顯示它的資源。
如果您確實在開發REST服務,並且想通過使其難以作弊來“幫助”客戶,則可能要放棄使用可入侵標識符的想法。
所有的話
/comments
完全是一個完全合理的集合標識符,並且在該根下創建標識符層次結構也是完全合理的。
URI以下應達到目的。
/評論
對於上面給出的示例,讓我們了解實體與URI的關系:
帖子和評論是兩個獨立的實體。
當您只需要帖子並且僅傳遞post_id時
檢索帖子:
/posts
要檢索特定帖子:
/posts/{post_id}
當您只需要評論並且僅傳遞comment_id時
要檢索所有評論:
/comments
要檢索特定評論:
/comments/{comment_id}
當您通過傳遞post_id和comment_id同時需要給定帖子的評論時
要檢索帖子評論:
/posts/{post_id}/comments
要檢索給定帖子的特定評論,請執行以下操作:
/posts/{post_id}/comments/{comment_id}
希望它能解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.