2015-12-10 110 views

回答

0

我認爲至少你正在處理請求沒有真正的區別。 我認爲第二種風格適合更好,如果你必須通過服務器很多參數,例如提供高分辨率圖像的服務,在那裏你可以指定瓷磚尺寸,座標和其他類似的東西。 如果使用api作爲數據庫的接口,通常會使用第一種樣式。

我開發了一個使用這個庫的休息界面:https://atmospherejs.com/nimble/restivus,它使用起來非常簡單,它使用第一種風格。

0

因此,如果你想真正理解原因,你應該閱讀REST原則和API設計。

但一般來說,經驗法則是URL應代表資源。路徑通常代表一個給定的「事物」,查詢字符串表示對該「事物」的某種過濾器。因此,如果你的「發佈」對象在邏輯上是它自己的實體(ega博客文章),那麼它會有它自己的唯一url,這樣GET到www.example.com/posts/:id將返回一個您正在討論的特定博客條目。

GET/posts會映射到所有帖子的列表,例如,GET/posts?tagged =獵豹會給你一個過濾後的所有帖子列表,只返回那些分配給他們的「獵豹」標籤。

這是所有經驗法則和標準。實施真的沒有關係,大多數服務器都不在乎;但遵循這些標準是有價值的,因爲它們往往更易於維護,優雅,並且不需要做出一百萬個設計決策。如果你希望別人能夠與你融爲一體,那麼他們就會更容易瞭解他們的期望。

0

根據URI標準,查詢用於非分層篩選,而路徑用於分層篩選。

如果我們正在討論過濾收集,我會使用查詢,所以結果將是一個集合的表示,例如json []。另一方面,如果我們正在討論一個項目,那麼我將使用該路徑,並且json將是一個對象/項目{}。但這只是我自己的風格,你可以使用你喜歡的那一個。 (如果你在HATEOAS中使用REST,URI結構只有路由目的,假設你不這樣做)

0

在REST中,URL/URI是項目或項目集合的地址。因此,要獲得客戶2你可以這樣做的所有地址:

/api/customer/2/addresses 

然而,如果你有一個郵政編碼希望只是那些地址,你可以去:

/api/customer/2/addresses?withPostcode=1 

在這種情況下,第一URL/URI代表事物/事物,而第二個則應用修飾符,限制或過濾器。

因此someSrver.com/post/:_id意味着讓我的帖子這是已知的ID(雖然理想情況下它將是someSrver.com/posts/:_id - 注意複數)。而第二個(someSrver.com/post?id=_id)意味着問號左側的所有東西都已經已經縮小了你的東西/東西,他們現在需要通過ID 屬性(在這種情況下)對事物進行過濾。

在許多情況下,這是一個微妙的區別,但我總結它作爲第一個應用選擇器/位置,第二個應用選擇器/位置與過濾器。

0

雖然我沒有實現節點REST API服務器還沒有,我想,當你設計你的服務器和你幾個重要的點分享到:

  • 嘗試使用平板路徑,控制器,嵌套路徑造成混亂。
  • 避免像PUT,HEAD和PATCH這樣的自定義HTTP方法,而不是像他們這樣的所有防火牆。
  • 對HTTP 200 OK使用應用錯誤代碼,並僅對HTTP錯誤使用HTTP協議錯誤代碼。

查看更多:http://restafar.com/create-new-rest-server/