Ich frage mich, ob ich Matrix- oder Abfrageparameter in meinen URLs verwenden soll. Ich fand eine ältere Diskussion zu diesem Thema nicht zufriedenstellend.
Beispiele
- URL mit Abfrageparametern: http: //some.where/thing? ParamA = 1 & paramB = 6542
- URL mit Matrixparametern: http: //some.where/thing; paramA = 1; paramB = 6542
Auf den ersten Blick scheinen Matrixparameter nur Vorteile zu haben:
- besser lesbar
- Es ist keine Codierung und Decodierung von "&" in XML-Dokumenten erforderlich
- URLs mit "?" werden in vielen Fällen nicht zwischengespeichert; URLs mit Matrixparametern werden zwischengespeichert
- Matrixparameter können überall im Pfad erscheinen und sind nicht auf sein Ende beschränkt
- Matrixparameter können mehr als einen Wert haben:
paramA=val1,val2
Es gibt aber auch Nachteile:
- Nur wenige Frameworks wie JAX-RS unterstützen Matrixparameter
- Wenn ein Browser ein Formular über GET sendet, werden die Parameter zu Abfrageparametern. Es gibt also zwei Arten von Parametern für dieselbe Aufgabe. Um die Benutzer der REST-Services nicht zu verwirren und den Aufwand für die Entwickler der Services zu begrenzen, ist es einfacher, immer Abfrageparameter zu verwenden - in diesem Bereich.
Da der Entwickler des Dienstes ein Framework mit Unterstützung für Matrixparameter auswählen kann, besteht der einzige verbleibende Nachteil darin, dass Browser standardmäßig Abfrageparameter erstellen.
Gibt es noch andere Nachteile? Was würden Sie tun?