HTTP-methode QUERY gestandaardiseerd, die mogelijkheden van GET en POST combineert

De Internet Engineering Task Force (IETF), die zich bezighoudt met de ontwikkeling van protocollen en architectuur van het internet, heeft de HTTP-methode QUERY de status 'Voorgesteld Standaard' gegeven en de bijbehorende specificatie RFC 10008 gepubliceerd. De QUERY-methode verstuurt gegevens naar de server op dezelfde manier als de POST-methode, maar is niet gericht op het schrijven van gegevens en het wijzigen van de status, maar op het genereren van leesverzoeken.

Wat betreft de op te lossen taken lijkt de nieuwe methode op GET en stelt het in staat om verzoeken te verzenden die herhaald of opnieuw gestart kunnen worden zonder de status op de server te wijzigen. Net als bij de POST-methode worden de parameters van het verzoek in QUERY niet in de URI, maar in de body van het verzoek verzonden. Deze aanpak maakt het mogelijk om een groot aantal parameters in het verzoek door te geven, wat de limiet voor de grootte van parameters in de GET-methode (8000 bytes) overschrijdt.

GET /feed?q=foo&limit=10&sort=-published HTTP/1.1
Host: example.org

QUERY /feed HTTP/1.1
Host: example.org
Content-Type: application/x-www-form-urlencoded

q=foo&limit=10&sort=-published

Parameters die via de QUERY-methode zijn verzonden, worden niet in de logs weergegeven servers, wat enerzijds de analyse van verzoeken en het diagnosticeren van problemen bemoeilijkt, maar anderzijds de mogelijkheid biedt om vertrouwelijke gegevens uit de logs van proxyservers te verbergen.

Onder de toepassingsgebieden van de QUERY-methode wordt vermeld dat verzoeken naar Web API's worden verzonden, die resultaten in JSON- of XML-formaat leveren, of naar backends die content genereren. Om de mogelijkheid te bepalen om de nieuwe methode te gebruiken bij verzoeken aan server wordt voorgesteld om de OPTIONS-methode te gebruiken, en om de ondersteunde formaten wordt de HEAD-methode gebruikt:

> OPTIONS /contacts HTTP/1.1
> Host: example.org

HTTP/1.1 200 OK
Allow: GET, QUERY, OPTIONS, HEAD

De QUERY-methode ondersteunt caching — proxyservers of handlers kunnen het resultaat van de uitvoering van het verzoek opslaan, een URI toewijzen voor vervolgverzoeken via de GET-methode en informatie over het verstrekken van een gecacheerde versie teruggeven via de header 'Last-Modified'. Om te controleren op wijzigingen sinds het vorige verzoek kan de header 'If-Modified-Since' worden gebruikt. Om alternatieve uitvoeringsopties voor het verzoek aan te geven, kunnen in het antwoord de headers 'Content-Location' en 'Location' worden opgegeven, waarbij het verschil is dat de eerste een link verstrekt voor het verkrijgen van het resultaat van een eerder uitgevoerd verzoek, terwijl de tweede bedoeld is voor het herhalen van het verzoek met dezelfde parameters.

> QUERY /contacts HTTP/1.1
> Host: example.org
> Content-Type: application/x-www-form-urlencoded
> Accept: application/json
> select=surname,givenname,email&limit=10&match="email=*@example.*"

HTTP/1.1 200 OK
Content-Type: application/json
Content-Location: /contacts/stored-results/17
Location: /contacts/stored-queries/42
Last-Modified: Sat, 25 Aug 2012 23:34:45 GMT
Date: Sun, 17 Nov 2024, 16:10:24 GMT

> GET /contacts/stored-results/17 HTTP/1.1
> Host: example.org
> Accept: application/json

Naast het type «application/x-www-form-urlencoded» kunnen voor het verzenden van parameters in QUERY-aanvragen ook uitgebreide indelingen zoals JSONPath (application/jsonpath), XSLT (application/xslt+xml) en SQL (application/sql) direct worden gebruikt. Ondersteunde formaten worden server in de Accept-Query-header geretourneerd.

> HEAD /contacts HTTP/1.1
> Host: example.org

HTTP/1.1 200 OK
Content-Type: application/xhtml
Accept-Query: application/x-www-form-urlencoded, application/jsonpath, application/sql

> QUERY /errata.json HTTP/1.1
> Host: example.org
> Content-Type: application/jsonpath
> Accept: application/json
>
> $..[
> ?@.errata_status_code==»Rejected»
> && @.submit_date>»2024″
> ]
> [«doc-id»]

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster