2011-08-19 8 views
6

के भीतर delimiters के लिए सबसे अच्छा अभ्यास HTTP URL पथ में विभिन्न विराम चिह्नों का उपयोग करने के लिए मूर्ख नहीं होगा? मैं एपीआई के लिए संसाधन यूआरएल को परिभाषित करने की प्रक्रिया में हूं। इन संसाधन URL को विभिन्न प्रकार के क्लाइंट और मिडलवेयर द्वारा एक्सेस, संग्रहित और प्रेषित किया जाना चाहिए, इसलिए यह महत्वपूर्ण है कि उनमें ऐसे वर्ण न हों जो मुद्दों का कारण बन सकें।HTTP यूआरएल पथ

RFC 3986, section 2.2. "Reserved Characters" निर्दिष्ट करता उप delims के रूप में निम्न वर्णों: $ & '() * +,; =

इनमें से किसी भी HTTP योजना में URL पथ के भीतर मनमाना उपयोग के लिए अवैध रूप से कर रहे हैं!?

भले ही वे मानकों के अनुसार कानूनी हैं, तो इनमें से किसी के पास गैर-अनुपालन सॉफ़्टवेयर के कारण असली दुनिया की इंटरऑपरेबिलिटी समस्याओं का कारण बनने का उच्च अवसर है?

क्या कोई विशिष्ट उप-डिलीम्स है जिसे आपने व्यापक रूप से तैनात एपीआई में बिना किसी मुद्दे के उपयोग किया है (यह सबूत प्रदान करेगा कि आपके द्वारा उपयोग किए जाने वाले लोग सुरक्षित हैं)?

प्रेरणा यह है कि हमें कुंजी-मूल्य जोड़े को सीमित करने की आवश्यकता है जिसमें पदानुक्रमित अर्थशास्त्र नहीं है। हम ऐसा करने पर विचार कर रहे हैं: http://doriantaylor.com/policy/http-url-path-parameter-syntax। हालांकि, अगर यह एक समस्या होने की संभावना है, हम बस क्या करेंगे http://example.com/key1/value1/key2/value2

धन्यवाद

+0

मैं कुछ तोड़ने तक डोरियन टेलर की स्कीमा के साथ जाऊंगा, और उसके बाद '/ key/value/key/value' को _alternative_ के रूप में जोड़ूंगा लेकिन पुराने को संगतता के लिए काम कर रहा हूं। – zwol

उत्तर

0

जिस तरीके से तुम जाओ, यह सुनिश्चित हो; एपीआई बदलना एक संस्करण के साथ भी समस्याग्रस्त हो सकता है। यह खराब विचार समान संसाधन के लिए कई स्थानों के लिए है - एक कैनोलिक स्थान होना चाहिए। सिद्धांत में रहते हुए आप एक HTTP 301 रीडायरेक्ट का उपयोग कर सकते हैं, अगर आप संगतता के बारे में चिंतित हैं तो यह सबसे अच्छा बचा है।

डोरियन टेलर सेट योजना समझदार (और पूरी तरह से कानूनी) दिखती है और किसी भी प्रणाली (या कोई भी जो बेहद छोटी गाड़ी नहीं है) के साथ कोई संगतता समस्या नहीं देनी चाहिए।

अपने URL फ़ॉरवर्ड स्लैश एक नया URL में पैरामीटर के रूप में इस्तेमाल किया जा करने की जरूरत है और बराबर होती है percent encoded होना होगा, लेकिन उस के रूप में दोनों एक मानक क्वेरी स्ट्रिंग (?&=) और अपने प्रस्तावित विकल्प के लिए सच है, साथ ही अगर :// यदि प्रोटोकॉल शामिल है। जाहिर है, अगर आप अपने मूल्यों में ;,= का उपयोग करना चाहते हैं तो आपको उन्हें एन्कोड करने की आवश्यकता होगी।

एकमात्र संभावित समस्या जो मैं देख सकता हूं वह यह है कि यदि आपके यूआरएल एक सीएसवी में संग्रहीत हैं, लेकिन सीएसवी पुस्तकालय सामान्य हैं और विशेष वर्णों को उद्धृत करना अच्छी तरह परिभाषित है।

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

  • कोई संबंधित समस्या नहीं^_^