クエリパラメーターとマトリックスパラメーターを使用する場合


90

クエリパラメータhttp://example.com/apples?order=random&color=blue

マトリックスパラメータhttp://example.com/apples;order=random;color=blue

  1. クエリパラメーターとマトリックスパラメーターのどちらを使用すればよいですか?
  2. マトリックスパラメーターはURLの途中で使用できますが、クエリパラメーターは使用できないのはなぜですか?例えば:http://example.com/apples;order=random;color=blue/2006/archive
  3. マトリックスパラメーターがクエリパラメーターのスーパーセットである場合、それらを常に使用しないのはなぜですか?

マトリックスパラメータの詳細については、http//www.w3.org/DesignIssues/MatrixURIs.htmlをご覧ください。

回答:


110

マトリックスパラメーターとクエリパラメーターの違いは、単なる規則ではありません。

主な違いは次のとおりです。

  • クエリパラメータ持つURLは、中間/プロキシ(現在)によってキャッシュされた応答を持ちません。
  • 行列パラメーターはパスのどこにでも現れる可能性があります
  • 相対URIの計算が異なります
  • 通常、クエリパラメータは、リソースで既存のメソッドを使用するのではなく、新しい動詞を追加するために悪用されます
  • マトリックスパラメーターはリソースではなく、階層内で表現するのが難しい情報スペースのリソースを参照するのに役立つ側面です
  • 私はそれをクエリとマトリックスパラメーターでより詳細にそしてより多くの参照で書きました


    4
    「クエリパラメータを持つURLの応答は、仲介者/プロキシによってキャッシュされません」。これは純粋に実装固有のものではありませんか?この動作を要求するHTTP標準には何も表示されません...
    Gili

    1
    要約すると、あなたの言うことが真実なら、なぜすべてのクエリパラメーターをマトリックスパラメーターに移行しないのですか?
    Gili

    2
    @Gili彼はその動作がHTTPによって義務付けられているとは決して言っていません。彼の記事から:「仲介者(プロキシ)は、URLにクエリパラメータを持つURLをキャッシュしません。これは、Webの初期の頃、動的に生成されたページからのキャッシュ制御情報を信頼していなかったためです。」仕様と実際の慣行は時々(またはほとんどの場合)異なります。
    ヘンディイラワン

    6
    この答えは3/5間違っています。相対URIに関する違いと、パスの途中にパラメーターを埋め込む機能はtrueです。他のすべてのポイントは間違っています。マトリックスパラメーターは、人気が高まるとまったく同じ問題が発生するため、クエリパラメーターとの違いはありません。
    ギリ

    3
    @Gillクエリパラメータは、オプションの条件を定義するのに役立ちます。マトリックスパラメータは、パス変数の補足情報です。次のURLクエリを参照してください:localhost / services / api /…マトリックス:localhost / services / api / movies / actor; name?limit = 10 クエリのマトリックスとして使用すると、よりわかりやすくなります。このURLは、bdarganのポイント5を証明しています。
    スキッピー2013
    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.