2016-05-17 95 views
1

我知道一些name conversions of REST API,例如資源的名稱應該是多元的,使用不同的HTTP方法具有相同的URI來對資源進行不同的操作,等反映資源關係的REST URI?

但作爲URI應該反映資源的關係,我是一個有點困惑。因此,需要作爲一個例子,當更新一個答案的存在評論,URI應該是這樣的:

PUT /{contextPath}/questions/{questionId}/answers/{answerId}/comments/{commentId} 

但我覺得彆扭使用這個so-called standard URI時,因爲:

  1. 這是一個有點冗長,特別是當分層很深時,就是 。
  2. questionId和answerId在這裏完全沒有必要,因爲 commentId足以讓服務器識別評論記錄。

那麼處理這個問題有什麼合適的方法呢?我應該始終關注名稱轉換,或者在資源關係等級爲很深的情況下進行一些更改

回答

2

我斷然不同意「URI應該反映資源的關係」 addoption意見。

URIs是指向資源的指針。而已。有一些習慣使它們易於閱讀,因此更容易處理。當然沒有硬性規定,關係應該在URI路徑上建模。隨意以平面而不是分層的方式對資源進行建模。使用link來建模資源之間的關係,並使用查詢參數來縮小集合的範圍。

1

它給你更多的選項,而不必提出額外的請求。

因此,您可以調用可能需要說出問題ID的函數。 當你只有commentId你必須先查詢你的questionId。

取決於你的功能需求。如果您在上一頁有特定信息,並且必須在下一次再次使用它,爲什麼要查詢兩次?除非是敏感的問題顯然不是。

這就是我對你應該如何看待你的標準

1

我將簡化路由/ URI:以相應的RequestBody

PUT /comments/{commentId} 

沿,也許是某種DTO的。 URI不應該從上下文路徑中一直顯示層次結構。它可以是可以唯一標識資源的最短的URI