614

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


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

キャメルケース

  • サーバーで大文字と小文字が区別されない場合に発生する可能性のある問題
  • クエリ文字列キー(http://api.example.com?** searchQuery ** = ...)でかなり広く使用されているようですが、他のURI部分では使用されていません。

ハイフン

  • 他の選択肢よりも審美的に心地よい
  • URIのパス部分で広く使用されているようです
  • 野生でハイフンでつながれたクエリ文字列キーを見たことがない
  • SEOにとっておそらくより良い(これは神話かもしれない)

アンダースコア

  • プログラミング言語の処理が潜在的に簡単
  • いくつかの一般的なAPI(Facebook、Netflix、StackExchangeなど)は、URIのすべての部分でアンダースコアを使用しています。

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

4

7 に答える 7

617

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

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

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

camelCaseまた、ユーザーはキーunderscoreを使用する必要がありますが、そうではありません。shifthyphenated

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

于 2013-08-26T18:32:22.967 に答える
284

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

これは、OreillyのMarkMasseの「RESTAPIDesignRulebook」からのものです。

さらに、スタックオーバーフロー自体が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

于 2013-08-26T17:38:01.627 に答える
29

ハイフンをお勧めしますが、リストにない回答も想定します。

何もありません

  • /quotationrequests/私の会社のAPIには、などのURIがあります/purchaseorders/
  • イントラネットアプリだと言っていたのに、SEOをメリットとして挙げました。Googleは、次のクエリのURLのパターン/foobar/と一致します?q=foo+bar
  • @ ServAce85示唆しているように、ユーザーがアドレスバーに渡す任意の文字列に対してPHP呼び出しを実行することを検討しないでください。
于 2012-12-03T15:48:22.913 に答える
22

短い答え:

区切り文字としてハイフンを使用した小文字の単語

長い答え:

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

于 2020-04-30T16:26:13.060 に答える
21

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

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

そうは言っても、これが私がさまざまなオプションをどのように見るかです:

ハイフン

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

アンダースコア

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

キャメルケース

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

脊椎ケース(RFC3986で強調表示されています)を使用することをお勧めします。このケースは、Google、PayPal、およびその他の大企業で使用されています。

ソース: -https: //blog.restcase.com/5-basic-rest-api-design-guidelines/

于 2021-01-14T15:40:34.930 に答える
-2

これが両方の長所です。

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

したがって、私が行うことは、アンダースコアを使用し、Apacheの.htaccessファイルに小さな書き換えルールを追加して、すべてのアンダースコアをハイフンに書き換えることです。

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

于 2015-06-09T23:49:17.977 に答える