我打算在NODE.JS和Meteor上構建一個使用REST API的服務器。REST API-服務器難題
什麼是寫入的API的這兩種方法之間的差異:
1. http://meteorpedia.com/read/REST_API
例如:someSrver.com/ 交/:_ ID
- someSrver.com/ 後?ID = _id
感謝
我打算在NODE.JS和Meteor上構建一個使用REST API的服務器。REST API-服務器難題
什麼是寫入的API的這兩種方法之間的差異:
1. http://meteorpedia.com/read/REST_API
例如:someSrver.com/ 交/:_ ID
感謝
我認爲至少你正在處理請求沒有真正的區別。 我認爲第二種風格適合更好,如果你必須通過服務器很多參數,例如提供高分辨率圖像的服務,在那裏你可以指定瓷磚尺寸,座標和其他類似的東西。 如果使用api作爲數據庫的接口,通常會使用第一種樣式。
我開發了一個使用這個庫的休息界面:https://atmospherejs.com/nimble/restivus,它使用起來非常簡單,它使用第一種風格。
因此,如果你想真正理解原因,你應該閱讀REST原則和API設計。
但一般來說,經驗法則是URL應代表資源。路徑通常代表一個給定的「事物」,查詢字符串表示對該「事物」的某種過濾器。因此,如果你的「發佈」對象在邏輯上是它自己的實體(ega博客文章),那麼它會有它自己的唯一url,這樣GET到www.example.com/posts/:id將返回一個您正在討論的特定博客條目。
GET/posts會映射到所有帖子的列表,例如,GET/posts?tagged =獵豹會給你一個過濾後的所有帖子列表,只返回那些分配給他們的「獵豹」標籤。
這是所有經驗法則和標準。實施真的沒有關係,大多數服務器都不在乎;但遵循這些標準是有價值的,因爲它們往往更易於維護,優雅,並且不需要做出一百萬個設計決策。如果你希望別人能夠與你融爲一體,那麼他們就會更容易瞭解他們的期望。
根據URI標準,查詢用於非分層篩選,而路徑用於分層篩選。
如果我們正在討論過濾收集,我會使用查詢,所以結果將是一個集合的表示,例如json []
。另一方面,如果我們正在討論一個項目,那麼我將使用該路徑,並且json將是一個對象/項目{}
。但這只是我自己的風格,你可以使用你喜歡的那一個。 (如果你在HATEOAS中使用REST,URI結構只有路由目的,假設你不這樣做)
在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 屬性(在這種情況下)對事物進行過濾。
在許多情況下,這是一個微妙的區別,但我總結它作爲第一個應用選擇器/位置,第二個應用選擇器/位置與過濾器。
雖然我沒有實現節點REST API服務器還沒有,我想,當你設計你的服務器和你幾個重要的點分享到:
讀也http://jsonapi.org/ – Askar