URIの単語区切り文字としてのハイフン、アンダースコア、またはキャメルケース?


477

イントラネットアプリ用にHTTPベースのAPIを設計しています。私はそれが物事の大まかな体系ではかなり小さな懸念事項であることを理解していますが、URI内の単語を区切るためにハイフン、アンダースコア、またはキャメルケースを使用する必要がありますか?


これが私の最初の考えです。

キャメルケース

  • サーバーで大文字と小文字が区別されない場合に考えられる問題
  • クエリ文字列のキーにかなり広範囲に使用しているようだ(http://api.example.comSEARCHQUERY = ...)ではなく、他のURIの部分で

ハイフン

  • 他の選択肢よりも審美的に楽しい
  • URIのパス部分で広く使用されているようです
  • 実際にハイフネーションされたクエリ文字列キーを見たことがない
  • おそらく SEOに適しています(これは神話かもしれません)

下線

  • プログラミング言語が扱いやすい可能性
  • いくつかの人気のあるAPI(Facebook、Netflix、StackExchangeなど)は、URIのすべての部分でアンダースコアを使用しています。

私はすべてのアンダースコアに傾いています。大企業のほとんどがそれらを使用しているという事実は説得力があります(https://stackoverflow.com/a/608458/360570を参照)。


私が読んだすべてのことから、ハイフン使用する必要がありますが、アンダースコアの方が管理しやすいようです
ServAce85

1
ハイフンは、SEOの目的には、かつてより優れていたと思います。これは今は真実ではないかもしれませんが、非常に多くの人々がそれを採用しており、ベストプラクティスとしてより広く受け入れられています。一方、アンダースコアは、バックエンドプログラミングで処理する方が簡単な場合があります。私はPHPを使用しているため、ハイフンよりも関数名にアンダースコアを使用する方がはるかに簡単です。 camelCaseが最も簡単に実装できるかもしれませんが、多くの場合それを読むことは困難です。最後に、あなたはを見たことがないと言ったのは正しかったと思いますhyphenated query string in the wild。これは通常、キャメルケースの場合です。
ServAce85

この質問によると、有効なオプションでアンダースコアではありません。stackoverflow.com/questions/3641722/...
wytten


人気のあるAPIについて言及しましたが、追加したいのはGoogleです。私が見た限りでは、Googleは単語の間に何も使用していません(たとえば、Google Maps Distance Matrix APIを確認してください)。
nbeuchat 2017年

回答:


473

クロール可能なWebアプリケーションのURLではハイフンを使用する必要があります。どうして?ハイフンは単語を分離し(検索エンジンが個々の単語にインデックスを付けることができるようにするため)、単語の文字ではありません。アンダースコアは単語の文字です。つまり、単語の一部と見なされます。

これをChromeで
ダブルクリック:camelCaseこれをChromeでダブルクリック:under_scoreこれをChromeで
ダブルクリック:ハイフン付き

Chrome(Googleも検索エンジンを作っているそうです)が、そのうちの1つだけが2つの単語であると考えているのを見てください。

camelCaseそしてunderscoreまた、使用することをユーザに要求shiftに対し、鍵をhyphenatedしません。

では、クロール可能なWebアプリケーションでハイフンを使用する必要がある場合、イントラネットアプリケーションで別のことをする必要があるのはなぜですか。覚えておくべきことが1つ少なくなります。


20
Windows 7上の私のFirefox 24は、「ハイフン付き」は2つの単語であると考えています。
マルセルSTOR

9
'under_score'と同じように動作します。
MarcelStör2013年

18
たとえばqueryStringの規則、?event_id=1または?eventId=1???
user2727195

8
@ user2727195 URLでは大文字と小文字が区別されますが、誤入力の可能性を排除するため、ベストプラクティスは可能な限り小文字を使用することです。
ニコラスシャンクス2016年

7
インタラクティブな回答:)
wild_nothing

210

REST APIの標準的なベストプラクティスは、キャメルケースやアンダースコアではなくハイフンを使用することです。

これは、OreillyのMark Masseの "REST API Design Rulebook"によるものです。

さらに、Stack Overflow自体がURLでハイフンを使用していることに注意してください。 .../hyphen-underscore-or-camelcase-as-word-delimiter-in-uris

WordPressと同様: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
Just FYI-"REST API Design Rulebook"が2011年10月に公開されました。過去8年間で状況が変わった可能性があります。
ChrisN

25

一方で、私はハイフンをお勧めします、私はまた、あなたのリストにない答えを仮定しなければなりません。

何もない

  • 私の会社のAPIのようなURIを持っている/quotationrequests//purchaseorders/などを。
  • イントラネットアプリだとおっしゃっていましたが、SEOをメリットとして挙げていました。Googleは、クエリのURLのパターン/ foobar /に一致します?q=foo+bar
  • @ ServAce85が示唆するように、ユーザーがアドレスバーに渡す任意の文字列に対してPHP呼び出しを実行することを考慮しないことを本当に望みます。

明らかな選択肢を指摘するための+1。また、/ quotation / requests /から/ quotationrequests /を明確にします。
Josh Petitt 2013

34
この応答の悪い点は、SEOの観点からは、マシンが1つの単語の終わりと別の単語の始まりを理解する方法がないため、この情報が失われることです。人間の読者にとっても同様に困難です。単語レベルの区切り文字は、何もないよりもいくつか持つ方がよいでしょう。
Al Sweigart、2015年

3
@AlSweigart SEOはログインウォールの背後にあるイントラネットアプリケーションであるため、関係ありません。
Nicholas Shanks

2
@ niel-mcguiganに同意します。これはイントラネットアプリですが、どこにでもハイフンを使用すると、覚える必要が1つ少なくなります。
Drew Goodwin 2016年

2
@DrewGoodwin十分に公正です。「推奨」ではなく「仮定」と言ったことに注意してください:-)また、ドメインには通常ハイフンが含まれていないため、パスでの使用はもう1つ覚えておく必要があります。
Nicholas Shanks 2016

18

一般的に、イントラネットアプリであり、汎用のインターネットアプリではないため、心配するほどの影響はありません。特に、イントラネットであるため、検索エンジンがイントラネットにアクセスできないようにする必要があるため、SEOは問題になりません。(もしそうなら、それはイントラネットアプリではありません)。

そして、ソルトの価値があるフレームワークには、これを行うデフォルトの方法がすでにあるか、マルチワードのURLコンポーネントの処理方法を変更するのがかなり簡単なので、あまり心配する必要はありません。

とはいえ、さまざまなオプションの表示方法は次のとおりです。

ハイフン

  • ハイフンの最大の危険は、同じ文字が(通常)減算と数値否定(つまり、マイナスまたはマイナス)にも使用されることです。
  • ハイフンはURLコンポーネントで扱いにくいと感じます。記事のタイトルで単語を区切るために、URLの最後でのみ意味をなすようです。または、たとえば、SEOとユーザーの明確化のためにURLの末尾に追加されるStack Overflow質問のタイトル。

下線

  • 繰り返しになりますが、URLコンポーネントには誤りを感じます。それらは本質的にクリーンで流れるURLの真ん中に大きくて見かけ上のスペースを追加するため、URLのフロー(および美しさ/シンプルさ)を分割します。
  • 下線と混ざりがちです。ユーザーがURLをMS Wordまたは他の同様のテキスト編集プログラム、またはURLを取得して下線でスタイル設定できる他の場所(従来のリンクと同様)にコピーアンドペーストすることを期待している場合は、単語の区切り文字としてアンダースコアを使用しないでください。特に、印刷すると、下線付きの下線付きURLは、下線ではなくスペースが含まれているように見えます。

キャメルケース

  • URLの流れが良くなり、前の2つのオプションのような欠点がないため、私のお気に入りです。
  • することができ、わずかに小文字から大文字を区別する苦労を持っている人々のために読み取ることが難しく、ほとんどの「言葉」はURLの構成要素とすることとで区切らなければならないので、これは、URLに多くの問題をすべきではない/とにかく。2語を超えるURLコンポーネントがあることがわかった場合は、その概念に適した名前を見つけてください。
  • それはありません大文字と小文字を区別して可能性の問題がありますが、ほとんどのプラットフォームでは大文字と小文字の区別の有無のいずれかになるように調整することができます。これ実際には2つの場合にのみ問題になります。a。)人間がURLを入力する場合、およびb。)プログラマー(人間ではないため)がURLを入力する場合。大文字と小文字の区別に関係なく、入力ミスは常に問題なので、これはすべて1つのケースと違いはありません。

13
同意しない。SOを見て、すべてのワードプレスサイトを見て、ほとんどのニュースサイトを見てください。それらはすべてハイフンを使用しています。また、キャメルケースはケースを混合しますが、私の意見ではウェブはすべて小文字でなければなりません。
Fabien Warniez

4
私の意見では、Webは実際には大文字と小文字を区別しないはずです。規約に関しては、RoR(Ruby on Rails)ルートアプローチに従う場合は、アンダースコアを使用します。通常は、レールによって生成されたルートと自分の名前付きルート全体で一貫性を保つためにそうします。それにもかかわらず、私にとっては、ダッシュは下線よりも読みやすいと思います。
rpbaltazar

1
おそらく、彼らはイントラネットに内部検索エンジンを持っていますか?
Juha Untinen

3
同意しない。ハイフンに対するあなたの主張はどちらも欠陥があります。ここではタプルの名前部分について説明しているので、否定や減算の危険はありません。数学または否定のためにタプルの名前部分を機能または評価することはできません。また、URIでのハイフンの使用については、確立されたサイトの不足によって使用されている長年のベストプラクティスであるため、不便な点はありません。また、Shiftキーを押す必要がなく、事実上すべての人が単語の境界として扱います。
tpartee

2
私が覚えている限り、ハイフンはURLで頻繁に使用される基準であり、今日の標準では間違いなくベストプラクティスと見なされています。使いにくいと感じるので、使用しません。
ピストルピート2017

2

簡潔な答え:

ハイフンをセパレーターとする小文字の単語

長い答え:

URLの目的は何ですか?

アドレスを指すことが答えである場合、短縮URLも適切に機能します。読みやすく、保守しやすくしないと、開発者と保守者の両方に役立ちません。これらはサーバー上のエンティティを表すため、論理的に名前を付ける必要があります。

ハイフンの使用をお勧めします

URLで句読点を使用することを検討してください。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-api-naming-best-practices.html#word-delimiters


-1

ここに両方の​​長所があります。

私はまた、アンダースコアを「好き」にしています。それらについてのあなたのすべての肯定的な点に加えて、彼らには特定の古いスタイルもあります。

下線を使用し、Apacheの.htaccessファイルに小さな書き換えルールを追加して、すべての下線をハイフンに書き換えます。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.