नॉन-सीआरयूडी संचालन को एक रेस्टफुल सेवा में जोड़ने का "रेस्टफुल" तरीका क्या है? कहो कि मेरे पास एक ऐसी सेवा है जो CRUD को इस तरह रिकॉर्ड करने की अनुमति देती है:
GET /api/car/123 <- Returns information for the Car object with ID 123
POST /api/car <- Creates a new car (with properties in the request)
PUT /api/car/123 <- Updates car 123 (with properties in the request)
DELETE /api/car/123 <- Deletes car 123
POST /api/car/123/wheel/ <- Creates a wheel and associates it to car 123
अगर मैं कार का रंग बदलना चाहता हूं, तो मैं बस POST /api/car/123
नए रंग के लिए एक POST चर शामिल करूंगा ।
लेकिन मान लीजिए कि मैं एक कार खरीदना चाहता हूं, और यह ऑपरेशन केवल "उपयोगकर्ता" रिकॉर्ड की "स्वामित्व वाली कार" संपत्ति को अपडेट करने से अधिक जटिल है। क्या यह केवल कुछ करना पसंद है POST /api/car/123/purchase
, जहां "खरीद" अनिवार्य रूप से एक विधि का नाम है? या क्या मुझे PURCHASE
इसके बजाय एक कस्टम HTTP क्रिया का उपयोग करना चाहिए POST
?
या गैर-सीआरयूडी ऑपरेशन पूरी तरह से आरईएसटी के दायरे से बाहर हैं?
PATCH /api/car/123
रंग पैरामीटर का उपयोग करना और भेजना बेहतर होगा याPUT /api/car/123
संपूर्ण कार ऑब्जेक्ट को उपयोग करें और भेजें। POST यह अनुमान लगाएगा कि आप एक नई कार बना रहे हैं और संभवतः URL के अंत में कभी भी आईडी शामिल नहीं करना चाहिए