تحديثات متعددة مريحة (مثال: واضح في سلة التسوق)؟

StackOverflow https://stackoverflow.com/questions/444545

  •  22-07-2019
  •  | 
  •  

سؤال

ودعونا نقول لدي لدي متجر على شبكة الإنترنت مع ميزة "عربة التسوق" وأريد أن تنفيذ وصلة "عربة فارغة" بطريقة مريحة.

لالبساطة، دعونا نقول مواردي هي العربة التي تحتوي CartItems، كل منها يحتوي على المنتج. قد يكون لي محددات:

# add a product to the current user's Cart
POST /products/product_id/cart_items/

# remove a product from the current user's Cart
DELETE /cart_items/cart_item_id/

وإذا كان الأمر كذلك، ما من شأنه أن URI مريحة للارتباط "عربة فارغة" تبدو وكأنها؟

وبدلا من ذلك، كنت أفكر فيه سلة بأنها حامل للأغراض العامة للتطبيقات (<لأ href = "https://stackoverflow.com/questions/411462/restful-way-to-create-multiple-items-in -one-طلب "> كما هو موضح هنا ):

# add a product
# form data contains e.g., product_id=123&action=add
POST /carts/cart_id/actions/

# remove a product
# action_id is the id of the action adding product 123
DELETE actions/action_id

# empty cart
# form data contains action=clear
POST /carts/cart_id/actions/

وهذا النهج يبدو أكثر تعقيدا مما يجب أن يكون. ما يمكن أن يكون طريقة أفضل؟

هل كانت مفيدة؟

المحلول

لا تفعل النهج الثاني. ضخ actions مختلفة من خلال نقطة النهاية واحد لا يشعر مريحة IMO.

لديك DELETE /cart_items/cart_item_id/ التي تزيل cart_item_id من العربة الخاصة بهم. ماذا عن DELETE /cart_items/ لمسح العربة نفسها؟

نصائح أخرى

وإضافة عنصر إلى عربة:

وPOST carts/{cartid}/items

واسترداد عنصر معين من العربة:

وGET carts/{cartid}/items/{itemid}

وحذف عنصر معين من العربة:

وDELETE carts/{cartid}/items/{itemid}

والحصول على حالة العربة:

وGET carts/{cartid}/state

و(يمكن إرجاع قيمة مثل 0،1 الذي يشير إلى عدد من العناصر في عربة)

وإفراغ سلة:

وPUT carts/{cartid}/state?state=0

هل هذا تبدو بديهية؟

وDELETE /cart_items/ فكرة مثيرة للاهتمام الذي لديه نوقشت أيضا هنا .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top