2017-09-01 109 views
0

讓我們假設我想建立一個寧靜的API應該添加項目到購物車。我認爲,最直接的方法是這樣的:網址設計寧靜api

POST /shoppingcarts/{shoppingCartId}/items - to generate an itemId 
PUT /shoppingcarts/{shoppingCartId}/items/{itemId} 

現在很可能是當我想要一個項目給它添加一個購物車不存在。還有一個要求,即客戶不得創建購物車。如果客戶添加一個商品,並且購物車不存在,則應該創建該商品。

現在我會設計這樣的API:

POST /shoppingcartitems - to generate a shoppingcartItem 
PUT /shoppingcartitems/{shoppingcartItems} 

這是否有道理呢?或者有另一種方法來做到這一點。

後續問題是,當一個物品被創建時,應該返回完整的購物車。創建項目時返回完整的購物車似乎是錯誤的,因爲它是一個不同的資源。我可能只是將超媒體鏈接添加到指向購物車的已創建項目的正文中。這是否也是正確的?

+0

[REST Shopping cart]的可能重複(https://stackoverflow.com/questions/33786421/rest-shopping-cart) – ctor

回答

0

如果我理解正確,有兩個資源可以管理,ShoppingCarts和Items。 如果業務邏輯是在向其添加項目之前創建購物車... 然後,下面的設計應該工作。

A)要創建一個購物車

  • POST:/ shoppingcarts/
  • 回報:{購物車-ID}

B),然後創建/添加項目到購物車

  • POST :/ shoppingcarts/{購物車-ID}/
  • BODY:{有關項目數據}
  • 回報:{項目-ID}

,也可以是更具體的網址中包含 「項目」 。

  • POST:/ shoppingcarts/{購物車-ID} /項目/
  • BODY:{有關項的數據}
  • 返回:{項-ID}

C)爲了獲得在購物車

  • 得到所有物品:/ shoppingcarts/{購物車-ID} /項目/
  • 回報:{數據的所有項目}

d)要在購物車中獲取特定項目

  • GET:/ shoppingcarts/{購物車-ID} /項目/ {項目-ID}/
  • 回報:{數據項}

E)從購物車中刪除項目。

  • DELETE:/ shoppingcarts/{購物車-ID} /項目/ {項目-ID}/

也提出要修改現有的資源不是創建一個新的資源。 如果需要更新已存在的商品的數量,將執行以下操作。

  • PUT:/ shoppingcarts/{購物車-ID} /項目/ {項目-ID}/
  • BODY:{數量:2,{項目信息的其餘部分}}

或者您可以使用PATCH來更新數量。

  • PATCH:/ shoppingcarts/{購物車-ID} /項目/ {項目-ID}/
  • BODY:{數量:2}

希望它能幫助!