2009-01-14 10 views
5

मान लें कि मेरे पास "शॉपिंग कार्ट" सुविधा वाला एक ऑनलाइन स्टोर है और मैं एक "खाली कार्ट" लिंक को एक शानदार तरीके से कार्यान्वित करना चाहता हूं।विश्वसनीय एकाधिक अपडेट (उदाहरण: एक शॉपिंग कार्ट साफ़ करें)?

सादगी के लिए, मान लीजिए कि मेरे संसाधन कार्ट हैं जिनमें कार्टइटम शामिल हैं, जिनमें से प्रत्येक में एक उत्पाद है। मेरे यूआरआई हो सकता है:

 
# 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/ 

यदि हां, तो क्या होगा की तरह "खाली गाड़ी" लिंक देखने के लिए RESTful यूआरआई?

इसके बजाय, मैं कार्रवाई के लिए एक सामान्य प्रयोजन धारक (as described here) के रूप में गाड़ी के बारे में सोच सकता है:

 
# 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/ 

यह दृष्टिकोण और अधिक जटिल की तुलना में यह करने की जरूरत है लगता है। एक बेहतर तरीका क्या होगा?

उत्तर

15

दूसरा दृष्टिकोण न करें। एक एंडपॉइंट के माध्यम से विभिन्न actions फ़नलिंग को रीस्टफुल आईएमओ महसूस नहीं होता है।

आपके पास DELETE /cart_items/cart_item_id/ है जो cart_item_id को उनके कार्ट से हटा देता है। कार्ट को साफ़ करने के लिए DELETE /cart_items/ के बारे में क्या?

6

एक कार्ट में कोई आइटम जोड़ना:

POST carts/{cartid}/items

गाड़ी से कोई विशिष्ट आइटम प्राप्त कर रहा है:

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

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

गाड़ी से कोई विशिष्ट आइटम हटाया जा रहा है

गाड़ी की स्थिति हो रही है:

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

GET carts/{cartid}/state

गाड़ी खाली हो रहा है (0,1 कि कार्ट में आइटम की संख्या को इंगित करता है जैसे कोई मान कर सके)

क्या यह सहज दिखता है?

+8

'DELETE कार्ट/{कार्टिड}/आइटम' के साथ कार्ट को खाली करना आपके (अन्यथा बहुत स्पष्ट) उदाहरण में अधिक सहज ज्ञान युक्त दिखता है। – Tomas

+0

किसी URL में कार्ट आईडी डालने के बारे में कोई सुरक्षा चिंता? –

+0

@ ब्रेको नहीं अगर कार्टिड एक यादृच्छिक रूप से जेनरेट की गई मार्गदर्शिका है। फिर भी कार्ट के "मालिक" को सत्यापित करने के लिए सुरक्षा जांच की जानी चाहिए। –

संबंधित मुद्दे