2012-06-13 10 views
6

बस एक छोटी सवाल:Backbone.save पोस्ट के बजाय PUT

एक मॉडल का नया उदाहरण होने और यूआरएल /api/store/category करने के लिए सेट के साथ एक model.save() जारी करने, रीढ़ एक पोस्ट जारी करता है। मेरे ज्ञान के अनुसार, इसे PUT का उपयोग करना चाहिए, जैसा कि इस "PUT or POST: The REST of the Story" ब्लॉग पोस्ट में उल्लिखित है।

कौन सही है? बीबी या इस लेख के लेखक?

उत्तर

13

Backbone documentation के अनुसार, एक नया मॉडल सहेजने के परिणामस्वरूप एक POST अनुरोध होगा, और मौजूदा मॉडल (आईडी रखने) को सहेजने से पुट अनुरोध निकल जाएगा।

बचानेmodel.save ([गुण], [विकल्प])
...
तो मॉडल isNew,, को बचाने के लिए एक "बनाने" (HTTP POST) हो सकता है अगर मॉडल पहले से ही सर्वर पर मौजूद है, सहेज एक "अद्यतन" (HTTP PUT) होगा।

और अगर आप सोच रहे हैं कि अगर रीढ़ निर्माण के लिए एक पोस्ट का उपयोग करना चाहिए,

  1. PUT vs POST in REST
  2. विकिपीडिया
  3. पर RESTful web services

जाँच इन लेखों के प्रकाश में, मैं 'डी कहें कि, बैकबोन के संदर्भ में, क्रियाएं सही ढंग से उपयोग की जाती हैं:

  • एक नए मॉडल की बचत प्रणाली में बदलाव का कारण बनता है, एक नया URL जोड़ा जाता है, कार्रवाई idempotent नहीं है, यह एक पोस्ट होना चाहिए,
  • एक ज्ञात मॉडल बचत एक दिए गए URL के एक संसाधन की जगह, कार्रवाई बेवकूफ है, यह एक पुट होना चाहिए।
+1

सही, इसलिए पोस्ट अनुरोध के जवाब में आपको नव निर्मित आईडी वापस भेजनी चाहिए। – Yaroslav

+0

धन्यवाद, मुझे पहले से ही यह पता था। शायद मेरा सवाल थोड़ा गलत था। मैं सोच रहा था कि रीढ़ की हड्डी ऑफ-मानक है ;-) – Jan

+0

@Jan मैंने POST/PUT की पसंद का जवाब देने के लिए अपना उत्तर संशोधित किया – nikoshr

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