HTTPQUERY
Deutsch

Die HTTP-QUERY-Methode

QUERY ist eine vorgeschlagene HTTP-Methode, die eine echte Lücke schließt: Sie ist sicher und idempotent wie GET, darf aber wie POST einen Request-Body transportieren. Verstehen Sie sie als „ein GET, dem Sie eine Nutzlast mitgeben können“.

Daseinsberechtigung

Komplexe Abfragen erzwangen lange Zeit eine unschöne Entscheidung:

  • GET mit Query-String packt jeden Filter in die URL. URLs haben Längenbeschränkungen, landen im Klartext in Logs und sind für strukturierte oder verschachtelte Kriterien unhandlich.
  • POST mit Body transportiert die Nutzlast zwar problemlos, täuscht aber über die Absicht hinweg. POST ist weder sicher noch idempotent, daher müssen Caches, Crawler und Zwischeninstanzen annehmen, dass die Anfrage den Zustand ändert. Das tut sie nicht — Sie lesen ja nur.

QUERY löst den Widerspruch auf: Die Semantik sagt „dies ist ein Lesezugriff“, und der Body trägt die Kriterien.

Eigenschaften

EigenschaftQUERYGETPOST
Sicher✓✓✗
Idempotent✓✓✗
Request-Body✓✗✓
Cachebar✓✓bedingt

So sieht eine Anfrage aus

QUERY /products HTTP/1.1
Host: shop.example
Content-Type: application/json
Accept: application/json

{ "category": "boots", "inStock": true }

Caching mit Content-Location

Weil QUERY sicher und idempotent ist, kann eine Antwort zwischengespeichert werden — der Cache-Schlüssel darf jedoch nicht allein die URL sein, da der Body variiert. Der Server benennt den kanonischen Ort des Ergebnisses mit einem Content-Location-Header:

HTTP/1.1 200 OK
Content-Location: /products?category=boots&inStock=true
Cache-Control: max-age=60

Ein Cache (oder der Client) kann diese Repräsentation anschließend für eine gleichwertige Anfrage wiederverwenden. Genau dieser Mechanismus hält einen Lesezugriff mit Body cachebar.

Ausprobieren

Gehen Sie zum Playground und senden Sie eine echte QUERY-Anfrage an den Echo-Endpunkt dieser Website, um genau zu sehen, wie Methode, Header und Body am Server ankommen.

QUERY ist in einem IETF Internet-Draft definiert und befindet sich noch in Entwicklung. Betrachten Sie die obigen Details als Arbeitszusammenfassung und prüfen Sie den verlinkten Draft für den maßgeblichen, aktuellen Text.