web-dev-qa-db-ja.com

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

私はイントラネットアプリケーション用のHTTPベースのAPIを設計しています。私はそれが物事の壮大な体系ではかなり小さな関心事であることを認識していますが、:私はURIの単語を区切るためにハイフン、アンダースコア、キャメルケースを使うべきですか?


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

キャメルケース

  • サーバーで大文字と小文字が区別されない場合に起こりうる問題
  • クエリ文字列キーではかなり普及しているようです( http://api.example.comsearchQuery= ...)しかし、他のURI部分にはありません

ハイフン

  • 他の選択肢よりも美的に楽しい
  • uRIのパス部分で広く使われているようです
  • ハイフン付きのクエリ文字列キーがワイルドに見られることはありません
  • SEOにはおそらく良いでしょう(これは神話かもしれません)

アンダースコア

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

私はすべてをアンダースコアに傾けています。大手プレーヤーの大半がそれらを使っているという事実は説得力があります( https://stackoverflow.com/a/608458/360570 を参照)。

384
Josh Johnson

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

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

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

camelCaseおよびunderscoreも、ユーザーに shift hyphenatedはそうではありません。

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

380
Neil McGuigan

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

これはOreillyによるMark Masseの "REST APIデザインルールブック"から来ています。

さらに、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実際に

160
Al Sweigart

私はハイフンをお勧めしますが、私はあなたのリストに載っていない答えも仮定します。

まったく何もしない

  • 私の会社のAPIには、/quotationrequests//purchaseorders/などのURIがあります。
  • あなたがそれがイントラネットアプリであると言ったにもかかわらず、あなたは利益としてSEOを挙げました。 Googleは、URLのパターン/ foobar /を?q=foo+barのクエリに一致させます。
  • Ireally@ ServAce85が示唆しているように、ユーザーがアドレスバーに渡した任意の文字列に対してPHP呼び出しを実行することを検討しないでください。
25
Nicholas Shanks

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

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

とはいえ、ここにさまざまなオプションがあります。

ハイフン

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

アンダースコア

  • 繰り返しになりますが、URLコンポーネントでは違和感を覚えます。 URLのフロー(および美しさ/シンプルさ)を分割します。これは、基本的に、クリーンで流れるURLの中央に大きくて重い見かけのスペースを追加するためです。
  • 彼らは下線に溶け込む傾向があります。ユーザーがURLをMS Wordまたは他の同様のテキスト編集プログラム、またはURLを拾って下線(リンクなど)伝統的にare)、Wordの区切り文字としてアンダースコアを避けたい場合があります。特に、印刷時に下線付きの下線付きURLは、下線ではなくspacesが含まれているように見える傾向があります。

キャメルケース

  • URLの流れが良くなり、前の2つのオプションの欠点がないため、私のお気に入りです。
  • 大文字と小文字を区別するのに苦労している人にとっては、わずかに読みにくいかもしれませんが、これはそれほど大きな問題ではありませんほとんどの「単語」はURLコンポーネントであり、とにかく/で区切られる必要があるためです。 「単語」の長さが2を超えるURLコンポーネントがある場合は、おそらくその概念に適した名前を見つけようとする必要があります。
  • Itdoesには大文字と小文字の区別に関する問題がありますが、ほとんどのプラットフォームは大文字と小文字を区別するか、大文字と小文字を区別しないように調整できます。 本当に2つのケースの問題:a。)URLを入力する人間、およびb。)プログラマー(人間ではないので)入力する入力するURL。タイプミスはalwaysであり、大文字と小文字の区別に関係なく、すべて1つのケースと同じです。
17
cdeszaq

これが両方の長所です。

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

だから私はアンダースコアを使用し、単にすべてのアンダースコアをハイフンに書き直すためにあなたのApacheの.htaccessファイルに小さな書き換え規則を追加することです。

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

0
user2597538