تحديثات متعددة مريحة (مثال: واضح في سلة التسوق)؟
-
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/
فكرة مثيرة للاهتمام الذي لديه نوقشت أيضا هنا .