साइट पर जिस साइट पर मैं काम कर रहा हूं, हम एक प्रकार के संसाधन के लिए हमारे यूआरएल में सुधार की प्रक्रिया में हैं - विशेष रूप से, संख्यात्मक आईडी से अद्वितीय, वर्णनात्मक तारों की ओर बढ़ रहे हैं। ऐसा ही एक उदाहरण उपयोगकर्ता नाम (हमारे विशेष मामले, लेकिन analagous) द्वारा उन्हें पहचान करने के लिए संख्यात्मक डेटाबेस आईडी के आधार पर की पहचान उन से अलग हटना होगा। तो एक यूआरएल उपयोगकर्ता के जानकारी का उपयोग करने की तरह देखने के लिए प्रयोग किया है:REST - एकाधिक संभावित पहचानकर्ताओं का समर्थन
/users/48573
और अब यह समस्या सिर्फ
तरह/users/thisisausername.
कि हम अभी भी किसी भी तरह संख्यात्मक आईडी के माध्यम से उन्हें लाने के लिए सक्षम होना चाहिए है लग रहा है , एपीआई के विरासत उपभोक्ताओं के लिए। हम बाकी यूआरएल खुद को रीडायरेक्ट करने के लिए (जैसे /users/48573
/users/thisisausername
पर पुन: निर्देशित नहीं होना चाहिए) की जरूरत नहीं है, हम सिर्फ पुराने पहचानकर्ता का उपयोग करके सही डेटा प्राप्त करने के लिए एक विधि की जरूरत है। समाधान या तो आईडी द्वारा उपयोगकर्ता जानकारी (जिसमें आसानी से नया पहचानकर्ता, उपयोगकर्ता नाम शामिल है) तक पहुंचने का एक वैकल्पिक तरीका प्रदान करना चाहिए, या आईडी द्वारा उपयोगकर्ता नाम तक पहुंच बनाना चाहिए। कुछ संभावित समाधान हो सकते हैं:
- पहचान के कुछ वैकल्पिक तरीके को निर्दिष्ट करने के लिए नोड का उपयोग करना, उदा।
/users/byid/48573
- पहचान के कुछ वैकल्पिक विधि निर्दिष्ट करने के लिए एक क्वेरी पैरामीटर का उपयोग करना, जैसे
/users/48573?fetchby=id
या/users/48573?byid=true
- एक और संसाधन हैं, उदाहरण के रूप में उपयोगकर्ता नाम-दर-आईडी का इलाज
/identifiers/username/48573
इनमें से कौन सा (यदि कोई है) उचित REST के निकट है? आप समस्या से कैसे निपटेंगे?
मैं एक खोज के रूप में गैर-प्रमुख-पहचानकर्ता क्षेत्रों के माध्यम से पहुंच को लागू करने को समाप्त कोडित है। यह समाधान एकाधिक क्षेत्रों के माध्यम से कई प्रकार के संसाधनों को लाने के लिए अनुमति देता है, जबकि प्राथमिक पहचानकर्ता के रूप में केवल एक को बनाए रखने के लिए। स्थिरता के लिए, "खोज" एपीआई सूची सूचियां। इसलिए, यदि उपयोगकर्ता का उपयोग करने की आधिकारिक तरीका है: /उपयोगकर्ता/thisisausername और आईडी के आधार पर उपयोग करने के लिए, हमारे पास है? /उपयोगकर्ताओं आईडी = 48,573 इसी तरह, हम विभिन्न क्षेत्रों के एक नंबर पर खोज सकते हैं , जैसा कि: /उपयोगकर्ता? firstName = केली प्रेरणा से था: http://jwyseur.blogspot.com/2008/12/uri-design-for-rest.html (देखें "संसाधन खोजना") –
तो आप कैशिंग पर पंसद? मेरे पास आपके जैसा ही समस्या है, लेकिन क्वेरी पैरामीटर के माध्यम से उन्हें समस्या हल नहीं कर सकती है जो एक आरईएसटी एपीआई के प्राथमिक लाभों में से एक को हटा देती है। मुझे आपका पहला बुलेट सुझाव पसंद है ... – HDave