হাইফেন, আন্ডারস্কোর বা উটকেস ইউআরআই-তে শব্দ ডিলিমিটার হিসাবে?


475

আমি একটি ইন্ট্রানেট অ্যাপের জন্য এইচটিটিপি-ভিত্তিক এপিআই ডিজাইন করছি। আমি বুঝতে পারি যে এটি জিনিসগুলির বিশাল স্কিমের মধ্যে একটি খুব ছোট উদ্বেগ, তবে: ইউআরআইগুলিতে শব্দটি সীমিত করতে আমি কি হাইফেন, আন্ডারস্কোর বা উটকেস ব্যবহার করব?


এখানে আমার প্রাথমিক চিন্তা:

ক্যামেলকেস

  • সার্ভার কেস-সংবেদনশীল না হলে সম্ভাব্য সমস্যাগুলি
  • ক্যোরিং স্ট্রিং কীগুলিতে ( http://api.example.com ? searchQuery = ...) মোটামুটি ব্যাপকভাবে ব্যবহার হয়েছে বলে মনে হয় , তবে অন্যান্য ইউআরআই অংশে নয়

হাইফেন

  • অন্যান্য বিকল্পের চেয়ে আরও নান্দনিকভাবে আনন্দদায়ক
  • ইউআরআইয়ের পথ অংশে এটি ব্যাপকভাবে ব্যবহৃত হবে বলে মনে হচ্ছে
  • বুনোতে হাইফেনেটেড ক্যোয়ারী স্ট্রিং কীটি কখনও দেখেনি
  • এসইওর পক্ষে সম্ভবত আরও ভাল (এটি একটি পৌরাণিক কাহিনী হতে পারে)

আন্ডারস্কোর

  • প্রোগ্রামিং ভাষাগুলি পরিচালনা করার পক্ষে সম্ভাব্য সহজ
  • বেশ কয়েকটি জনপ্রিয় এপিআই (ফেসবুক, নেটফ্লিক্স, স্ট্যাকএক্সচেঞ্জ ইত্যাদি) ইউআরআইয়ের সমস্ত অংশে আন্ডারস্কোর ব্যবহার করছে।

আমি সব কিছুর জন্য আন্ডারস্কোরের দিকে ঝুঁকছি। বেশিরভাগ বড় খেলোয়াড় এগুলি ব্যবহার করছেন তা সত্যই বাধ্যকর ( https://stackoverflow.com/a/608458/360570 দেখুন )।


আমি যা পড়েছি তার থেকে আপনার হাইফেন ব্যবহার করা উচিত তবে আন্ডারস্কোরগুলি পরিচালনা করা আরও সহজ বলে মনে হয়।
ServAce85

1
আমি বিশ্বাস করি যে হাইফেনগুলি এক সময় এসইও উদ্দেশ্যে উন্নত ছিল। এটি এখন সত্য হতে পারে না, তবে অনেক লোক এটিকে গ্রহণ করেছে যে এটি সর্বোত্তম অনুশীলন হিসাবে আরও ব্যাপকভাবে গ্রহণযোগ্য। অন্যদিকে ইনকডোরগুলি ব্যাকএন্ড প্রোগ্রামিংয়ের সাথে মোকাবিলা করা আরও সহজ হতে পারে। আমি পিএইচপি ব্যবহার করি, সুতরাং হাইফেনের চেয়ে ফাংশন নামের জন্য আন্ডারস্কোর ব্যবহার করা অনেক সহজ। উটকেস প্রয়োগ করা সবচেয়ে সহজ হতে পারে তবে এটি পড়া প্রায়শই কঠিন। অবশেষে, আমি মনে করি আপনি ঠিক ছিলেন যখন আপনি বলেছিলেন যে আপনি কখনই একটি দেখতে পাচ্ছেন না hyphenated query string in the wild। এটি সাধারণত উট কেসের জন্য একটি সময়।
সার্ভএসি 85

এই প্রশ্নের মতে, আন্ডারস্কোর একটি বৈধ বিকল্প নয়: stackoverflow.com/questions/3641722/...
wytten


আপনি জনপ্রিয় API গুলি উল্লেখ করেছেন, আমি একটি যুক্ত করতে চাই: গুগল। যতদূর আমি দেখেছি, গুগল শব্দের মধ্যে কিছুই ব্যবহার করে না (উদাহরণস্বরূপ গুগল ম্যাপস দূরত্বের ম্যাট্রিক্স এপিআই পরীক্ষা করে দেখুন)।
nbeuchat

উত্তর:


472

একটি ক্রলযোগ্য ওয়েব অ্যাপ্লিকেশন URL এ আপনার হাইফেন ব্যবহার করা উচিত। কেন? হাইফেন শব্দের পৃথক করে (যাতে কোনও অনুসন্ধান ইঞ্জিন পৃথক শব্দকে সূচক করতে পারে), এবং এটি কোনও শব্দের চরিত্র নয় । ইন্ডস্কোর একটি শব্দের চরিত্র, যার অর্থ এটি একটি শব্দের অংশ হিসাবে বিবেচনা করা উচিত।

এটি ক্রোমে
ডাবল ক্লিক করুন: ক্যামেল কেস এটি ক্রোমে
ডাবল ক্লিক করুন : আন্ডার_স্কোর ক্রোমে এটি ডাবল-ক্লিক করুন: হাইফেন-আটেড

কীভাবে ক্রোম দেখুন (আমি শুনেছি গুগলও একটি অনুসন্ধান ইঞ্জিন তৈরি করে) কেবলমাত্র সেগুলির মধ্যে একটি দুটি শব্দ মনে করে?

camelCaseএবং underscoreব্যবহারকারীর shiftকীটি ব্যবহার করার প্রয়োজন রয়েছে , যদিও hyphenatedতা নেই।

সুতরাং যদি আপনার একটি ক্রলযোগ্য ওয়েব অ্যাপ্লিকেশনটিতে হাইফেন ব্যবহার করা উচিত হয় তবে আপনি কেন একটি ইন্ট্রানেট অ্যাপ্লিকেশনটিতে কিছু আলাদা করে বিরক্ত করবেন? মনে রাখতে হবে আরও একটি বিষয়।


20
উইন্ডোজ 7-এ আমার ফায়ারফক্স 24 'হাইফেন-আটেড' দুটি শব্দ বলে মনে করে।
মার্সেল Stör

9
এবং এটি 'আন্ডার_স্কোর' এর জন্য একই আচরণ করে।
মার্সেল Stör

18
কোয়েরি স্ট্রিংয়ের জন্য কোনও কনভেনশন, উদাহরণস্বরূপ ?event_id=1বা ?eventId=1???
ব্যবহারকারী2727195

8
@ ব্যবহারকারী2727195 যদিও ইউআরএলগুলি কেস-সংবেদনশীল তবে সর্বোত্তম অনুশীলন হ'ল সম্ভব যেখানে ছোট केस ব্যবহার করা উচিত, কারণ এটি ভুল টাইপের সম্ভাবনা সরিয়ে দেয়।
নিকোলাস শ্যাঙ্কস 12

7
ইন্টারেক্টিভ উত্তর :)
ওয়াইল্ড_না কিছুই

210

বিশ্রাম API গুলির জন্য মান সেরা অনুশীলনের একটি আছে হয় হাইফেন না ক্যামেলকেস বা আন্ডারস্কোর।

এটি ওরেইলি থেকে মার্ক মাসির "REST এপিআই ডিজাইন রুলবুক" থেকে এসেছে।

এছাড়াও, লক্ষ্য করুন যে স্ট্যাক ওভারফ্লো নিজেই ইউআরএলে হাইফেন ব্যবহার করে: .../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 এপিআই ডিজাইন রুলবুকের ক্যোয়ারিং স্ট্রিং গাইডলাইনগুলির অধ্যায়টি দেখেন তবে আপনি লক্ষ্য করবেন যে নির্দেশিকাগুলি নিয়মের অংশ অনুসারে আলাদা হয়। ক্যোয়ারী স্ট্রিংগুলিতে কেসিং সম্পর্কিত কোনও সুস্পষ্ট নিয়ম নেই, তবে আপনি দেখতে পাবেন যে ক্যোয়ারী স্ট্রিংয়ের বিভাগের সমস্ত উদাহরণ যে সমস্ত কীগুলি উটের ক্ষেত্রে রয়েছে।
মাইকেল ল্যাং

1
জাস্ট এফআইআই - "আরএসটি এপিআই ডিজাইন রুলবুক" অক্টোবরে প্রকাশিত হয়েছিল ২০১১ বিগত ৮ বছরে এটি সম্ভবত পরিবর্তন হয়েছে।
ChrisN

25

আমি হাইফেনের প্রস্তাব দিলে, আমি এমন একটি উত্তরও পোস্ট করব যা আপনার তালিকায় নেই:

কিছু না

  • আমার কোম্পানির এপিআই মত URI উল্লিখিত হয়েছে /quotationrequests/, /purchaseorders/ইত্যাদি।
  • এটি বলার পরেও এটি একটি ইন্ট্রানেট অ্যাপ্লিকেশন, আপনি এসইওটিকে একটি সুবিধা হিসাবে তালিকাভুক্ত করেছেন। গুগল একটি প্রশ্নের জন্য কোনও URL- তে প্যাটার্ন / ফুবার / সাথে মেলে?q=foo+bar
  • আমি সত্যিই আশা করি যে আপনি @ সার্ভারএএস 85 এর পরামর্শ অনুসারে ব্যবহারকারী ঠিকানা বারে যে কোনও স্বেচ্ছাচারী স্ট্রিংয়ের জন্য পিএইচপি কল কার্যকর করতে বিবেচনা করবেন না!

সুস্পষ্ট পছন্দটি নির্দেশ করার জন্য +1। এটি / উদ্ধৃতি / অনুরোধগুলি / থেকে / উদ্ধৃতি-অনুরোধগুলি বিতরণ করে।
জোশ পেটিট

32
এই প্রতিক্রিয়াটি সম্পর্কে খারাপটি হ'ল কোনও এসইও দৃষ্টিকোণ থেকে, কোনও শব্দটি কোথায় শেষ হয় এবং অন্যটি শুরু হয় তা বোঝার জন্য কোনও মেশিনের কোনও উপায় নেই, সুতরাং এই তথ্যটি হারিয়ে যায়। এটি মানব পাঠকদের পক্ষেও কঠিন। কিছুই বাদে কিছু শব্দ-স্তর বিভাজক রাখা ভাল।
আল সুইগার্ট

3
লগ-ইন প্রাচীরের পিছনে এটি একটি ইন্ট্রানেট অ্যাপ্লিকেশন হওয়ায় @ আলসওয়েগার্ট এসইও প্রাসঙ্গিক নয়।
নিকোলাস শ্যাঙ্কস

2
আমি @ নিল-ম্যাকগিগইগানের সাথে একমত যে এটি একটি ইন্ট্রানেট অ্যাপ্লিকেশন হলেও আপনি যদি সর্বত্র হাইফেন ব্যবহার করেন তবে এটি মনে রাখা একটি কম জিনিস to
ড্র গুডউইন

2
@ ড্রু গুডউইন ফেয়ার যথেষ্ট। যদিও মনে রাখবেন যে আমি বলেছি যে "পোস্টুলেট" "সুপারিশ নয়" :-) এবং সাধারণত ডোমেনগুলির মধ্যে হাইফেন থাকে না, সুতরাং সেগুলিকে পথে ব্যবহার করা ইতিমধ্যে মনে রাখা আরও একটি বিষয়।
নিকোলাস শ্যাঙ্কস

18

সাধারণভাবে, এটি উদ্বিগ্ন হওয়ার মতো যথেষ্ট প্রভাব ফেলবে না, বিশেষত যেহেতু এটি একটি ইন্ট্রানেট অ্যাপ এবং সাধারণ-ব্যবহারযোগ্য ইন্টারনেট অ্যাপ নয়। বিশেষত, এটি যেহেতু ইন্ট্রানেট , তাই এসইও কোনও উদ্বেগ নয়, যেহেতু আপনার ইন্ট্রনেটটি অনুসন্ধান ইঞ্জিনগুলিতে অ্যাক্সেসযোগ্য নয়। (এবং যদি এটি হয় তবে এটি কোনও ইন্ট্রানেট অ্যাপ নয়)।

এবং এটির লবণের কোনও কাঠামোর মধ্যে ইতিমধ্যে এটির একটি ডিফল্ট উপায় রয়েছে, বা এটি বহু-শব্দ URL টির সাথে কীভাবে আচরণ করে তা পরিবর্তন করা সহজ, তাই আমি এটি সম্পর্কে খুব বেশি চিন্তা করব না।

এটি বলেছিল, আমি এখানে বিভিন্ন বিকল্প দেখি:

হাইফেন

  • হাইফেনের জন্য সবচেয়ে বড় বিপদটি হ'ল একই চরিত্রটি (সাধারণত) বিয়োগ এবং সংখ্যাগত অবহেলার জন্যও ব্যবহৃত হয় (যেমন বিয়োগ বা নেতিবাচক )।
  • হাইফেনগুলি ইউআরএল উপাদানগুলিতে বিশ্রী বোধ করে । তারা কেবল কোনও নিবন্ধের শিরোনামে শব্দ পৃথক করার জন্য কোনও ইউআরএল শেষে অর্থপূর্ণ বলে মনে হচ্ছে। অথবা, উদাহরণস্বরূপ, স্ট্যাক ওভারফ্লো প্রশ্নের শিরোনাম যা এসইও এবং ব্যবহারকারীর স্পষ্টতার উদ্দেশ্যে কোনও ইউআরএল শেষে যুক্ত করা হয়।

আন্ডারস্কোর

  • আবার, তারা ইউআরএল উপাদানগুলিতে ভুল অনুভব করে। তারা একটি ইউআরএল এর প্রবাহ (এবং সৌন্দর্য / সরলতা) বিচ্ছিন্ন করে, যেহেতু তারা মূলত একটি পরিষ্কার, প্রবাহিত URL এর মাঝখানে একটি বড়, ভারী আপাত স্থান যুক্ত করে।
  • তারা আন্ডারলাইনগুলির সাথে মিশে যায়। যদি আপনি আশা করেন যে আপনার ব্যবহারকারীরা আপনার ইউআরএলগুলি এমএস ওয়ার্ড বা অন্যান্য অনুরূপ পাঠ্য-সম্পাদনা প্রোগ্রামগুলিতে অনুলিপি করে বা অন্য যে কোনও জায়গায় ইউআরএল বাছাই করে এবং একটি আন্ডারলাইন (যেমন লিংকগুলি traditionতিহ্যগতভাবে রয়েছে) দিয়ে স্টাইল করে , তবে আপনি এটি করতে চান শব্দ বিভাজক হিসাবে আন্ডারস্কোর এড়ানো। বিশেষত যখন মুদ্রিত হয় তখন আন্ডারস্কোর সহ একটি আন্ডারলাইন করা URL আন্ডারস্কোরের পরিবর্তে এর মধ্যে ফাঁকা স্থানগুলির মতো দেখায় ।

ক্যামেলকেস

  • এখন পর্যন্ত আমার প্রিয়, যেহেতু এটি ইউআরএলগুলি আরও ভাল প্রবাহিত বলে মনে করে এবং আগের দুটি বিকল্পের মধ্যে কোনও ত্রুটি নেই।
  • লোয়ার-কেস থেকে উচ্চ-কেসকে পৃথক করতে খুব কঠিন সময় পাওয়া লোকদের পক্ষে পড়া কিছুটা কঠিন হতে পারে তবে এটি কোনও ইউআরএল-এ খুব বেশি সমস্যা হওয়া উচিত নয়, কারণ বেশিরভাগ "শব্দ" ইউআরএল উপাদান এবং /কোনওভাবেই আলাদা হওয়া উচিত । যদি আপনি দেখতে পান যে আপনার কাছে একটি ইউআরএল উপাদান রয়েছে যা 2 টি "শব্দের" চেয়ে বেশি দীর্ঘ, আপনার সম্ভবত সেই ধারণার আরও ভাল নাম খোঁজার চেষ্টা করা উচিত।
  • এটা তোলে করেন কেস সংবেদনশীলতা সঙ্গে একটি সম্ভাব্য সমস্যা আছে, কিন্তু অধিকাংশ প্ল্যাটফর্মের উভয় ক্ষেত্রেই সংবেদনশীল বা কেস-অবশ হতে যাবে নিয়মিত। কোন এটি শুধুমাত্র সত্যিই 2 ক্ষেত্রে একটি বিষয়: ক) এই URL টি টাইপ মানুষেরা এবং খ) প্রোগ্রামাররা (যেহেতু আমরা মানুষ না) এই URL টি টাইপ টাইপস হয়।।। সবসময় , কেস সংবেদনশীলতা নির্বিশেষে একটি সমস্যা, তাই এই হল সব এক ক্ষেত্রে পৃথক নয়।

13
একমত নন। এসও দেখুন, সমস্ত ওয়ার্ডপ্রেস সাইট দেখুন, বেশিরভাগ নিউজ সাইটগুলিতে দেখুন, তারা সবাই হাইফেন ব্যবহার করে। এছাড়াও উটের কেস কেস মিশ্রিত করে, ওয়েবটি আমার মতে সমস্ত ছোট হাতের অক্ষর হওয়া উচিত।
ফ্যাবিয়েন ওয়ার্নিজ

4
আমার মতে, ওয়েবটি আসলে সংবেদনশীল হওয়া উচিত। কনভেনশন সম্পর্কে, আপনি যদি আরআর (রেলগুলিতে রুবি) রুটগুলি অনুসরণ করেন তবে আপনি আন্ডারস্কোর ব্যবহার করবেন। সাধারণত, আমি এটিকে জেনারেটেড রুট এবং আমার নামক রুটগুলিতে ক্রমাগত রাখার জন্য এটি করি। তবুও, আমি মনে করি যে আমার জন্য ড্যাশ আন্ডারস্কোরগুলির চেয়ে ভাল পড়তে পারে।
আরপিবলটাজার

1
সম্ভবত তাদের ইন্ট্রনেটে কোনও অভ্যন্তরীণ অনুসন্ধান ইঞ্জিন রয়েছে?
জুহা আনটিনেন

3
একমত নন। হাইফেনের বিরুদ্ধে আপনার উভয় যুক্তি ত্রুটিযুক্ত। প্রত্যাখ্যান বা বিয়োগ সম্পর্কে কোনও বিপদ নেই কারণ আমরা এখানে একটি টিউপলের নাম অংশের বিষয়ে কথা বলছি, আপনি কখনই গণিত বা অবহেলার জন্য কোনও অংশের নাম অংশটি কার্যকারী বা মূল্যায়ন করবেন না। ইউআরআই-তে হাইফেন ব্যবহার করার মতো উদ্ভট কিছু নেই কারণ এটি সু-প্রতিষ্ঠিত সাইটগুলির অভাব দ্বারা দীর্ঘকালীন সেরা অনুশীলন। তাদের শিফট কীটি হিট করার প্রয়োজন হয় না এবং কার্যত প্রত্যেকেই শব্দ সীমানা হিসাবে বিবেচিত হয়।
tpartee

2
যতদূর আমি মনে করতে পারি, হাইফেনগুলি ইউআরএল-এর প্রচলিত আদর্শ হিসাবে ব্যবহৃত হয়েছে এবং এটি অবশ্যই আজকের মানগুলির সেরা অনুশীলন হিসাবে বিবেচিত হয়। এগুলি ব্যবহার না করা কারণ অনুভূতিটি আমার কাছে বিশ্রী মনে হয়।
পিস্তল-পিট

2

সংক্ষিপ্ত উত্তর:

বিভাজক হিসাবে হাইফেন সহ লো-কেসড শব্দসমূহ

দীর্ঘ উত্তর:

ইউআরএল এর উদ্দেশ্য কী?

যদি কোনও ঠিকানার দিকে ইঙ্গিত করা উত্তর হয় তবে একটি সংক্ষিপ্ত URL টিও একটি ভাল কাজ করছে। আমরা যদি এটি পড়তে ও বজায় রাখা সহজ না করি তবে এটি বিকাশকারী এবং রক্ষণাবেক্ষণকারীদের একত্রে সহায়তা করবে না। তারা সার্ভারে একটি সত্তা প্রতিনিধিত্ব করে, তাই তাদের যুক্তিযুক্তভাবে নামকরণ করা উচিত।

গুগল হাইফেন ব্যবহার করার পরামর্শ দেয়

আপনার ইউআরএলগুলিতে বিরামচিহ্ন ব্যবহার বিবেচনা করুন। URL টি http://www.example.com/green-dress.html চেয়ে অনেক বেশী আমাদের কাছে উপকারী http://www.example.com/greendress.html । আমরা আপনাকে ইউআরএলগুলিতে আন্ডারস্কোর (_) এর পরিবর্তে হাইফেন (-) ব্যবহার করার পরামর্শ দিচ্ছি।

প্রোগ্রামিং ব্যাকগ্রাউন্ড থেকে আগত, উটকেস যৌথ শব্দের নামকরণের জন্য একটি জনপ্রিয় পছন্দ।

তবে আরএফসি 3986 ইউআরএলকে URL এর বিভিন্ন অংশের ক্ষেত্রে কেস-সংবেদনশীল হিসাবে সংজ্ঞায়িত করে। যেহেতু ইউআরএলগুলি কেস সংবেদনশীল তাই এটিকে নিম্ন-কী (লোয়ার কেসড) রাখা সর্বদা নিরাপদ এবং একটি ভাল মান হিসাবে বিবেচিত হয়। এখন এটি উইন্ডোটি থেকে একটি উটের মামলা নেয়।

উত্স: https://metamug.com/article/rest-api-naming-best-practices.html#word-delimiters


-1

এখানে উভয় বিশ্বের সেরা।

আমি তাদের "আপনার মতামতগুলি" পছন্দ করি না কেন, সেগুলি সম্পর্কে আপনার সমস্ত ইতিবাচক বিষয়গুলি ছাড়াও তাদের কাছে একটি নির্দিষ্ট পুরাতন স্কুলের স্টাইল রয়েছে।

সুতরাং আমি যা করি তা হ'ল আন্ডারস্কোরগুলি ব্যবহার করা এবং হাইফেনগুলিতে সমস্ত আন্ডারস্কোরগুলিকে পুনরায় লেখার জন্য আপনার অ্যাপাচের .htaccess ফাইলটিতে একটি ছোট পুনর্লিখনের নিয়ম যুক্ত করুন।

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.