簡體   English   中英

為REST API設計URI的最佳方法

[英]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.

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