グローバルリソースURI(つまり、アドレス指定可能性)の利点は何ですか?
質問
グローバルに一意のURIを使用して(RESTと同様に)リソースを参照することの利点は、独自のID形式を使用することと比べてどうですか?
例:
最初のアプローチでは、URL全体がIDです。 2番目のアプローチでは、5のみがIDです。最初のアプローチの2番目のアプローチよりも実際的な利点は何ですか?
なぜREST(どうやら)が最初のアプローチを支持するようになったのですか?
-編集:
実際には2つの個別の質問をしたため、私の質問は混乱を招きました。
- アドレス可能性の利点は何ですか?
- 上記の2つのURI形式の違いは何ですか。
自分の投稿を使用して、以下の両方の質問に回答しました。
解決 2
自分の質問に答えます:
1)URIが重要な理由
レナードリチャードソンとサムルビーによるRESTful Webサービス(ISBN:978-0-596-52926-0)から引用します:
リソースのジャンル“ディレクトリ内のリソースに名前を付ける実際のURIを検討します jellyfish&#8221 ;: http://www.google.com/search?q=jellyfish。そのクラゲの検索は同じです http://www.google.com のような実際のURI。 HTTPがアドレス可能でなかった場合、またはGoogle 検索エンジンはアドレス可能なWebアプリケーションではありませんでした。それを公開することはできませんでした。 本の中のURI。教えてください:“ google.comへのWeb接続を開き、‘ jellyfish’と入力します 検索ボックスで、‘ Google検索’をクリックします。ボタン。
これはアカデミックな心配ではありません。 1990年代半ばまで、ftp:// URI FTPサイト上のファイルを記述するために人気になり、人々は書く必要がありました “ ftp.example.comで匿名FTPセッションを開始します。それから ディレクトリpub / files /に移動し、ファイルfile.txtをダウンロードします。”作成されたURI HTTPとしてアドレス可能なFTP。今、人々は書くだけです:“ Download ftp:// ftp.example.com/pub/files/file.txt.”手順は同じですが、今では 機械で実行できます。
[...]
アドレス可能性は、Webアプリケーションの優れた点の1つです。それは簡単になります 元のデザイナーが想像もしなかった方法でWebサイトを使用するクライアント。
2)アドレス指定の利点は何ですか?
自分で作成するよりも、サーバーが提供するURIを追跡する方がはるかに簡単です。これは、リソースの関係が複雑すぎて単純なルールでは表現できないため、特に当てはまります。多数のクライアントでロジックを再実装するよりも、サーバーで一度ロジックをコーディングする方が簡単です。
個々のリソースURIが変更されていない場合でも、リソース間の関係が変更される場合があります。たとえば、Googleマップでマップタイルの縮尺を変更すると、タイルの相対位置を計算するクライアントが破損します。
3)カスタムIDよりもURIの利点は何ですか?
カスタムIDはリソースを一意に識別します。 URIは、それがどこにあるかを示すことにより、さらに一歩前進します。これにより、クライアントロジックが簡素化されます。
他のヒント
uriのようなものを見ると、通常のユーザーはそのuriを覚えることができます。
私たちのオタクは疑問符と変数を取得できますが、誰かが http:// wwwを覚えている場合。 http://www.hostの代わりにhost.com/users/john 。 com /?view = users& name = john 、それは大きな利点です。
ほとんどの検索エンジン最適化。
また、私の意見では、覚えやすく、よりクリーンで、より専門的な見方ができます。
1つ目は、より見た目の美しさです。
技術的に違いはありませんが、可能な場合は前者を使用してください。
Ó lafurが述べたように、前のURLの明確さは利点の1つです。
もう1つは、実装の柔軟性です。
生徒5の変更はめったにないとしましょう。 RESTスタイルのURLを使用する場合、コードを実行する代わりに静的ファイルを提供するオプションがあります。 Railsでは、students / 5への最初のリクエストがWebルートの下にキャッシュされたhtmlファイルを作成するのが一般的です。このファイルは、バックエンドに触れずに後続のリクエストを処理するために使用されます。当然、このアプローチに特化したレールはありません。
後のURLではこれは許可されません。静的ページの名前にURL変数(?、=)を含めることはできません。
RESTの観点からは両方のURIが有効ですが、Webキャッシュがクエリ文字列パラメーターを非常に異なる方法で処理することを理解してください。
キャッシングを利用したい場合は、クエリ文字列パラメーターを使用してリソースを特定しないことをお勧めします。
それは、風水の原則をどれだけ忠実に守りたいかにかかっていると思います。