यूआरआई में शब्द सीमांकक के रूप में हाइफ़न, अंडरस्कोर या कैमलकेस?


475

मैं इंट्रानेट ऐप के लिए HTTP- आधारित API डिज़ाइन कर रहा हूं। मुझे लगता है कि यह चीजों की भव्य योजना में एक बहुत छोटी चिंता है, लेकिन: क्या मुझे यूआरआई में शब्दों को परिसीमित करने के लिए हाइफ़न, अंडरस्कोर, या कैमल कैस का उपयोग करना चाहिए?


यहाँ मेरे प्रारंभिक विचार हैं:

टेढ़े मेढ़े संयुक्त शब्द

  • यदि सर्वर केस-असंवेदनशील है तो संभव समस्याएं
  • क्वेरी स्ट्रिंग कुंजियों ( http://api.example.com ? searchQuery = ...) में काफी व्यापक उपयोग होता है , लेकिन अन्य URI भागों में नहीं

हैफ़ेन

  • अन्य विकल्पों की तुलना में अधिक सौंदर्यवादी रूप से मनभावन
  • URI के पथ भाग में व्यापक रूप से उपयोग किया जा रहा है
  • जंगली में कभी भी हाइफ़न किए गए क्वेरी स्ट्रिंग कुंजी को नहीं देखा गया
  • एसईओ के लिए संभवतः बेहतर है (यह एक मिथक हो सकता है)

अंडरस्कोर

  • प्रोग्रामिंग भाषाओं को संभालने के लिए संभावित रूप से आसान है
  • कई लोकप्रिय API (Facebook, Netflix, StackExchange, आदि) URI के सभी भागों में अंडरस्कोर का उपयोग कर रहे हैं।

मैं हर चीज के लिए अंडरस्कोर की तरफ झुक रहा हूं। यह तथ्य कि अधिकांश बड़े खिलाड़ी उनका उपयोग कर रहे हैं, सम्मोहक है (देखें https://stackoverflow.com/a/608458/360270 )।


मैंने जो कुछ पढ़ा है, उससे आपको हाइफ़न का उपयोग करना चाहिए , लेकिन अंडरस्कोर को प्रबंधित करना अधिक आसान लगता है
ServAce85

1
मेरा मानना ​​है कि हाइफ़न , एक समय में, एसईओ प्रयोजनों के लिए बेहतर थे। यह अब सच नहीं हो सकता है, लेकिन इतने सारे लोगों ने इसे अपनाया है कि यह सबसे अधिक प्रचलन के रूप में स्वीकार किया जाता है। दूसरी ओर अंडरस्कोर बैकएंड प्रोग्रामिंग से निपटने के लिए अधिक आसान हो सकता है। मैं PHP का उपयोग करता हूं, इसलिए हाइफ़न की तुलना में फ़ंक्शन नाम के लिए अंडरस्कोर का उपयोग करना बहुत आसान है। कैमलकेस लागू करना सबसे आसान हो सकता है, लेकिन इसे पढ़ना अक्सर मुश्किल होता है। अंत में, मुझे लगता है कि आप सही थे जब आपने कहा था कि आप कभी नहीं देखते हैं hyphenated query string in the wild। यह आमतौर पर ऊंट के लिए एक समय है।
ServAce85

इस प्रश्न के अनुसार, अंडरस्कोर एक वैध विकल्प नहीं है: stackoverflow.com/questions/3641722/…
wytten


आप लोकप्रिय एपीआई का उल्लेख करते हैं, मैं एक जोड़ना चाहूंगा: Google। जहाँ तक मैंने देखा है, Google शब्दों के बीच में कुछ भी उपयोग नहीं करता है (उदाहरण के लिए Google मैप्स दूरी मैट्रिक्स एपीआई की जाँच करें)।
नबूकट

जवाबों:


472

आपको क्रॉल करने योग्य वेब एप्लिकेशन URL में हाइफ़न का उपयोग करना चाहिए। क्यों? क्योंकि हाइफ़न शब्दों को अलग करता है (ताकि एक खोज इंजन व्यक्तिगत शब्दों को अनुक्रमित कर सके), और एक शब्द चरित्र नहीं है । अंडरस्कोर एक शब्द चरित्र है, जिसका अर्थ है कि इसे एक शब्द का हिस्सा माना जाना चाहिए।

Chrome में इसे डबल-क्लिक करें: camelCase Chrome में इसे
डबल-क्लिक करें: under_score Chrome में इसे
डबल-क्लिक करें: hyphen-ated

देखें कि कैसे क्रोम (मैंने सुना है कि Google एक खोज इंजन भी बनाता है) केवल सोचता है कि उनमें से एक दो शब्द हैं?

camelCaseऔर underscoreउपयोगकर्ता को shiftकुंजी का उपयोग करने की आवश्यकता होती है , जबकि hyphenatedऐसा नहीं होता है।

इसलिए यदि आपको क्रॉल करने योग्य वेब एप्लिकेशन में हाइफ़न का उपयोग करना चाहिए, तो आप इंट्रानेट एप्लिकेशन में कुछ अलग करने से क्यों परेशान होंगे? एक कम बात याद रखना।


20
विंडोज 7 पर मेरा फ़ायरफ़ॉक्स 24 सोचता है कि 'हाइफ़न-एटेड' दो शब्द हैं।
मार्सेल स्टॉर

9
और यह 'under_score' के लिए समान व्यवहार करता है।
मार्सेल स्टॉर

18
उदाहरण के लिए, क्वेरीस्ट्रिंग के लिए कोई अधिवेशन ?event_id=1या ?eventId=1???
user2727195

8
@ user2727195 URLs केस-सेंसिटिव हैं, जहाँ भी संभव हो, लोअर केस का उपयोग करने के लिए सबसे अच्छा अभ्यास है, क्योंकि यह गलत होने की संभावना को दूर करता है।
निकोलस शैंक्स

7
परस्पर उत्तर :)
Wild_nothing

210

REST एपीआई के लिए मानक सर्वोत्तम अभ्यास एक हाइफ़न है , न कि ऊंट या अंडरस्कोर।

यह मार्क मैसी के "REST API Design Rulebook" से ओरेली से आता है।

इसके अलावा, ध्यान दें कि स्टैक ओवरफ्लो स्वयं URL में हाइफ़न का उपयोग करता है: .../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris

जैसा कि वर्डप्रेस: http://inventwithpython.com/blog/2012/03/18/how-much-math-do-i-need-to-know-to-program-not-that-much-actually


3
यदि आप REST API डिज़ाइन नियम पुस्तिका में क्वेरी स्ट्रिंग दिशानिर्देशों के अध्याय को देखते हैं, तो आपको नियम भाग के अनुसार दिशानिर्देश अलग-अलग दिखाई देंगे। क्वेरी स्ट्रिंग में आवरण के बारे में कोई स्पष्ट नियम नहीं है, लेकिन आप पाएंगे कि क्वेरी स्ट्रिंग पर अनुभाग में सभी उदाहरण हैं कि सभी कुंजी ऊंट मामले में हैं।
माइकल लैंग

1
सिर्फ FYI करें - "REST API Design Rulebook" को अक्टूबर 2011 में प्रकाशित किया गया था। यह संभव है कि पिछले 8 वर्षों में चीजें बदल गई हैं।
क्रिस 28

25

जब भी मैं हाइफ़न की सिफारिश करता हूं, मैं एक उत्तर भी दूंगा जो आपकी सूची में नहीं है:

कुछ भी नहीं

  • मेरी कंपनी का API जैसे यूआरआई है /quotationrequests/, /purchaseorders/और इतने पर।
  • आपके कहने के बावजूद कि यह एक इंट्रानेट ऐप था, आपने एसईओ को एक लाभ के रूप में सूचीबद्ध किया। Google किसी क्वेरी के लिए URL में पैटर्न / फ़ॉबर / से मेल खाता है?q=foo+bar
  • मुझे वास्तव में उम्मीद है कि आप किसी भी मनमाने तरीके से स्ट्रिंग को PHP कॉल निष्पादित करने पर विचार नहीं करेंगे, जो उपयोगकर्ता को पता पट्टी में जाता है, जैसा कि @ ServAf85 बताता है!

एक स्पष्ट विकल्प को इंगित करने के लिए +1। यह भी / उद्धरण / अनुरोध / से / अवतरण / अवज्ञा करता है।
जोश पेटिट

33
इस प्रतिक्रिया के बारे में बुरा क्या है, एक एसईओ परिप्रेक्ष्य से, मशीन के लिए यह समझने का कोई तरीका नहीं है कि एक शब्द कहां समाप्त होता है और दूसरा शुरू होता है, इसलिए यह जानकारी खो जाती है। यह मानव पाठकों के लिए भी कठिन है। कुछ की तुलना में कुछ शब्द-स्तरीय विभाजक होना बेहतर है।
अल स्वेगार्ट

3
@AlSweigart SEO प्रासंगिक नहीं है क्योंकि यह लॉग-इन दीवार के पीछे एक इंट्रानेट एप्लिकेशन है।
निकोलस शैंक्स

2
मैं @ niel-mcguigan से सहमत हूं कि भले ही यह एक इंट्रानेट ऐप है, अगर आप हर जगह हाइफ़न का उपयोग करते हैं तो यह याद रखना एक कम बात है।
ड्रू गुडविन

2
@DrewGoodwin मेला काफी। हालांकि ध्यान दें कि मैंने कहा कि "नॉटआउट" न करें "अनुशंसा" करें :-) और डोमेन में आमतौर पर हाइफ़न नहीं होते हैं, इसलिए रास्तों में उनका उपयोग करना पहले से याद रखने वाली एक और बात है।
निकोलस शैंक्स

18

सामान्य तौर पर, यह चिंता करने के लिए पर्याप्त प्रभाव नहीं होने वाला है, खासकर जब से यह एक इंट्रानेट ऐप है और सामान्य उपयोग वाला इंटरनेट ऐप नहीं है। विशेष रूप से, चूंकि यह इंट्रानेट है , इसलिए एसईओ चिंता का विषय नहीं है, क्योंकि आपका इंट्रानेट खोज इंजन तक पहुंच योग्य नहीं होना चाहिए। (और अगर यह है, तो यह एक इंट्रानेट ऐप नहीं है)।

और नमक के लायक कोई भी ढांचा या तो पहले से ही ऐसा करने का एक डिफ़ॉल्ट तरीका है, या यह बदलने में काफी आसान है कि यह बहु-शब्द URL घटकों के साथ कैसे व्यवहार करता है, इसलिए मैं इसके बारे में बहुत ज्यादा चिंता नहीं करता।

उस ने कहा, यहाँ मैं विभिन्न विकल्प देख रहा हूँ:

हैफ़ेन

  • हाइफ़न के लिए सबसे बड़ा खतरा यह है कि एक ही चरित्र (आमतौर पर) का उपयोग घटाव और संख्यात्मक निषेध के लिए भी किया जाता है (अर्थात। ऋण या ऋणात्मक )।
  • हाइफ़न URL घटकों में अजीब लगता है । वे एक लेख के शीर्षक में शब्दों को अलग करने के लिए केवल URL के अंत में समझ में आते हैं। या, उदाहरण के लिए, एक स्टैक ओवरफ्लो प्रश्न का शीर्षक जो एसईओ और उपयोगकर्ता-स्पष्टता प्रयोजनों के लिए एक URL के अंत में जोड़ा जाता है।

अंडरस्कोर

  • फिर से, वे URL घटकों में गलत महसूस करते हैं। वे URL के प्रवाह (और सौंदर्य / सरलता) को तोड़ देते हैं, क्योंकि वे अनिवार्य रूप से एक साफ, बहने वाले URL के बीच में एक बड़ा, भारी स्पष्ट स्थान जोड़ते हैं।
  • वे अंडरलाइन में घुलमिल जाते हैं। यदि आप अपने उपयोगकर्ताओं को एमएस वर्ड या इसी तरह के पाठ-संपादन कार्यक्रमों में या कहीं और अपने URL को कॉपी-पेस्ट करने की अपेक्षा करते हैं, जो किसी URL पर उठा सकते हैं और इसे एक रेखांकन के साथ स्टाइल कर सकते हैं (जैसे परंपरागत रूप से लिंक हैं), तो आप चाहते हो सकते हैं शब्द विभाजक के रूप में अंडरस्कोर से बचें। विशेष रूप से मुद्रित होने पर, अंडरस्कोर वाला एक रेखांकित URL यह देखने के लिए जाता है कि इसमें अंडरस्कोर के स्थान पर रिक्त स्थान है।

टेढ़े मेढ़े संयुक्त शब्द

  • मेरे पसंदीदा द्वारा, चूंकि यह URL को बेहतर प्रवाह प्रतीत होता है और इसमें कोई भी दोष नहीं है जो पिछले दो विकल्प करते हैं।
  • उन लोगों के लिए पढ़ना थोड़ा कठिन हो सकता है जिनके पास निचले मामले से ऊपरी मामले को अलग करने का कठिन समय है, लेकिन यह URL में बहुत अधिक समस्या नहीं होनी चाहिए, क्योंकि अधिकांश "शब्दों" को URL घटक होना चाहिए और एक द्वारा अलग किया जाना चाहिए/ भी रास्ते से । यदि आप पाते हैं कि आपके पास एक URL घटक है जो 2 "शब्दों" से अधिक लंबा है, तो आपको संभवतः उस अवधारणा के लिए एक बेहतर नाम खोजने का प्रयास करना चाहिए।
  • यह करता केस संवेदनशीलता के साथ एक संभव मुद्दा है, लेकिन सबसे प्लेटफार्मों या तो केस-संवेदी या केस-संवेदी होने के लिए समायोजित किया जा सकता। कोई भी यह वास्तव में केवल 2 मामलों के लिए एक समस्या है: a।) URL में टाइप करने वाले मनुष्य। और b।) प्रोग्रामर (चूंकि हम मानव नहीं हैं) URL टाइप करते हुए टाइप करते हैं। टाइपोस हमेशा एक समस्या है, चाहे मामला संवेदनशीलता का हो, इसलिए यह। अलग नहीं है कि सभी एक मामला।

13
सहमत नहीं हैं। एसओ को देखें, सभी वर्डप्रेस साइटों को देखें, अधिकांश समाचार साइटों को देखें, वे सभी हाइफ़न का उपयोग करते हैं। साथ ही ऊँट केस भी मिक्स केस करता है, वेब मेरी राय में सभी लोअर केस होना चाहिए।
फेबियन वार्नज

4
मेरी राय में, वेब को वास्तव में असंवेदनशील होना चाहिए। यदि आप RoR (रेल पर रूबी) मार्गों का अनुसरण करते हैं, तो सम्मेलन के संबंध में, आप अंडरस्कोर का उपयोग करेंगे। आमतौर पर, मैं ऐसा लगातार चलने वाली जनरेटेड रूट और मेरे नामित मार्गों को बनाए रखने के लिए करता हूं। फिर भी, मैं समझता हूं कि मेरे लिए डैश अंडरस्कोर से बेहतर है।
rpbaltazar 13

1
शायद उनके पास इंट्रानेट में एक आंतरिक खोज इंजन है?
जूथा अनटाइनन

3
सहमत नहीं हैं। हाइफ़न के खिलाफ आपके दोनों तर्क त्रुटिपूर्ण हैं। नकारात्मकता या घटाव के बारे में कोई खतरा नहीं है क्योंकि हम यहाँ एक टपल के नाम वाले हिस्से के बारे में बात कर रहे हैं, आपको गणित या नकार के लिए टपल के नाम वाले भाग का कभी भी कार्य या मूल्यांकन नहीं करना चाहिए। URI में हाइफ़न का उपयोग करने के बारे में कुछ भी अजीब नहीं है क्योंकि यह एक लंबे समय से चली आ रही सबसे अच्छी प्रथा है जिसका उपयोग अच्छी तरह से स्थापित साइटों की कमी के कारण किया जाता है। उन्हें Shift कुंजी मारने की भी आवश्यकता नहीं होती है और लगभग सभी द्वारा शब्द सीमा के रूप में व्यवहार किया जाता है।
1

2
जहाँ तक मुझे याद है, URLs में हाइफ़न का भारी उपयोग किया गया है, और निश्चित रूप से आज के मानकों में इसे सबसे अच्छा अभ्यास माना जाता है। उनका उपयोग नहीं करना क्योंकि अजीब लग रहा है मुझे अजीब लगता है।
पिस्तौल-पीट

2

संक्षिप्त जवाब:

विभाजक के रूप में एक हाइफ़न के साथ निचले आवरण वाले शब्द

लंबा जवाब:

URL का उद्देश्य क्या है?

यदि किसी पते की ओर इशारा करना उत्तर है, तो छोटा यूआरएल भी अच्छा काम कर रहा है। यदि हम इसे पढ़ना और बनाए रखना आसान नहीं बनाते हैं, तो यह डेवलपर्स और अनुरक्षकों को समान रूप से मदद नहीं करेगा। वे सर्वर पर एक इकाई का प्रतिनिधित्व करते हैं, इसलिए उन्हें तार्किक रूप से नामित किया जाना चाहिए।

Google हाइफ़न का उपयोग करने की अनुशंसा करता है

अपने URL में विराम चिह्न का उपयोग करने पर विचार करें। यूआरएल http://www.example.com/green-dress.html से कहीं अधिक के लिए उपयोगी है http://www.example.com/greendress.html । हम अनुशंसा करते हैं कि आप अपने URL में अंडरस्कोर (_) के बजाय हाइफ़न (-) का उपयोग करें।

प्रोग्रामिंग पृष्ठभूमि से आ रहा है, संयुक्त शब्दों के नामकरण के लिए कैमलकेस एक लोकप्रिय विकल्प है।

लेकिन RFC 3986 URL को URL के विभिन्न भागों के लिए केस-संवेदी के रूप में परिभाषित करता है। चूंकि URL केस संवेदी होते हैं, इसलिए इसे कम-कुंजी (लोअर कैस) रखना हमेशा सुरक्षित होता है और इसे एक अच्छा मानक माना जाता है। अब कि खिड़की से बाहर एक ऊंट मामले लेता है।

स्रोत: https://metamug.com/article/rest-ap-naming-best-practices.html#word-delimiters


-1

यहाँ दोनों दुनिया का सबसे अच्छा है।

मैं उनके बारे में आपके सभी सकारात्मक बिंदुओं के अलावा "अंडरस्कोर" को भी पसंद करता हूं, उनके लिए एक निश्चित पुरानी स्कूल शैली भी है।

तो मैं क्या करता हूँ अंडरस्कोर का उपयोग करें और बस अपनी अपाचे की .htaccess फ़ाइल में एक छोटा सा पुनर्लेखन नियम जोड़ें। सभी अंडरस्कोर को हाइफ़न में लिखने के लिए।

https://yoast.com/apache-rewrite-dash-underscore/

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.