हमारे RESTful API का हिस्सा उपयोगकर्ताओं को एक सीरियल नंबर के साथ एक आइटम पंजीकृत करने की अनुमति देगा। चूंकि धारावाहिक संख्या वैश्विक रूप से अद्वितीय नहीं है, इसलिए इसे संसाधन के पहचानकर्ता के रूप में उपयोग नहीं किया जा सकता है, इसलिए हम मूल संसाधन में एक पोस्ट का उपयोग करेंगे जो पहचानकर्ता उत्पन्न करेगा, उदा।एक idempotent HTTP POST अनुरोध
POST /my/items
<item serial-number="ABCDEF" />
जहां आइटम पहले से पंजीकृत नहीं है, HTTP अर्थशास्त्र अच्छी तरह से परिभाषित हैं। हम एक स्थान शीर्षलेख, और पंजीकृत आइटम को इकाई निकाय के रूप में वापस करते हैं, उदा।
HTTP 201 Created
Location: /my/items/1234
<item id="1234" serial-number="ABCDEF" />
हालांकि, इस मामले में जहां आइटम पहले से ही पंजीकृत है, एपीआई idempotent हो सकता है और एक नया बनाने के बिना पहले से पंजीकृत आइटम वापस चाहिए। मेरा सबसे अच्छा अनुमान यह है कि इसे 200 ओके स्टेटस कोड वापस करना चाहिए, और यह इंगित करने के लिए सामग्री-स्थान शीर्षलेख का उपयोग करना चाहिए कि आइटम वास्तव में कहां से आया था, उदा।
HTTP 200 OK
Content-Location: /my/items/1234
<item id="1234" serial-number="ABCDEF" />
क्या यह उचित लगता है? मैं पूरी तरह से स्पष्ट नहीं हूं कि स्थान या सामग्री-स्थान दूसरे मामले में अधिक उपयुक्त है या नहीं।
हम्म हां वास्तव में मुझे यह पसंद है। यद्यपि धारावाहिक संख्या वैश्विक रूप से अद्वितीय नहीं हो सकती है, लेकिन लगभग 100% संभावना है कि वे उपयोगकर्ता के दायरे में अद्वितीय होंगे ताकि यह एक विशिष्ट अद्वितीय पहचानकर्ता के रूप में कार्य कर सके। यह मेरी समस्या को हल करेगा कि डिवाइस कैसे जांच सकता है कि यह पहले से ही इस यूआरएल पर एक जीईटी का उपयोग करके पंजीकृत है और यह जांच रहा है कि प्रतिक्रिया 200 या 404 है। धन्यवाद! –