Wann werden Abfrageparameter im Vergleich zu Matrixparametern verwendet?

90

Abfrageparameter :http://example.com/apples?order=random&color=blue

Matrixparameter :http://example.com/apples;order=random;color=blue

  1. Wann sollte man Abfrageparameter gegenüber Matrixparametern verwenden?
  2. Warum können Matrixparameter in der Mitte einer URL verwendet werden, Abfrageparameter jedoch nicht? Beispielsweise:http://example.com/apples;order=random;color=blue/2006/archive
  3. Wenn Matrixparameter eine Obermenge von Abfrageparametern sind, warum nicht die ganze Zeit verwenden?

Weitere Informationen zu Matrixparametern finden Sie hier: http://www.w3.org/DesignIssues/MatrixURIs.html

Gili
quelle

Antworten:

110

Die Unterschiede zwischen Matrixparametern und Abfrageparametern sind viel mehr als nur Konventionen.

Die Hauptunterschiede sind:

  • Bei URLs mit Abfrageparametern wird die Antwort (derzeit) nicht von Vermittlern / Proxys zwischengespeichert.
  • Matrixparameter können an einer beliebigen Stelle im Pfad angezeigt werden
  • Die Berechnung des relativen Uri ist unterschiedlich
  • Abfrageparameter werden im Allgemeinen missbraucht, um neue Verben hinzuzufügen, anstatt vorhandene Methoden für Ressourcen zu verwenden
  • Matrixparameter sind keine Ressourcen, sondern Aspekte, die dazu beitragen, eine Ressource in einem Informationsraum zu referenzieren, der in einer Hierarchie nur schwer darzustellen ist
  • Ich habe es detaillierter und mit mehr Referenzen in Query vs. Matrix Parameters geschrieben

    bdargan
    quelle
    4
    "Bei URLs mit Abfrageparametern wird die Antwort nicht von Vermittlern / Proxys zwischengespeichert." Ist das nicht eine rein implementierungsspezifische Sache? Ich sehe nichts im HTTP-Standard, das dieses Verhalten fordert ...
    Gili
    1
    Zusammenfassend: Wenn das, was Sie sagen, wahr ist, warum würden Sie dann nicht alle Abfrageparameter in Matrixparameter migrieren?
    Gili
    2
    @Gili er hat nie gesagt, dass das Verhalten von HTTP vorgeschrieben ist. aus seinem Artikel: "Intermediaries (Proxys) werden keine URL mit einem Abfrageparameter in der URL zwischenspeichern. Dies liegt daran, dass sie in den frühen Tagen des Webs den Cache-Steuerinformationen von dynamisch generierten Seiten nicht vertraut haben." Die technischen Daten und die Praxis in der Praxis unterscheiden sich manchmal (oder in den meisten Fällen).
    Hendy Irawan
    6
    Diese Antwort ist 3/5 falsch. Der Unterschied in Bezug auf relative URIs und die Fähigkeit, Parameter in die Mitte eines Pfades einzubetten, ist wahr. Alle anderen Punkte sind insofern falsch, als Matrixparameter genau das gleiche Problem haben, sobald sie populärer werden, sodass sie sich in dieser Hinsicht nicht von Abfrageparametern unterscheiden.
    Gili
    3
    @ Gill-Abfrageparameter sind nützlich beim Definieren optionaler Kriterien. Matrixparameter sind zusätzliche Informationen zur Pfadvariablen. Siehe diese URL-Abfrage: localhost / services / api /… Matrix: localhost / services / api / movies / Schauspieler; Name? Limit = 10 Sinnvoller, wenn als Matrix über Abfrage verwendet. Diese URL belegt Punkt 5 von bdargan.
    überspringen