Standardiseret HTTP-metode QUERY, der kombinerer funktionerne fra GET og POST

Det tekniske udvalg IETF (Internet Engineering Task Force), som arbejder med udviklingen af protokoller og arkitektur for internettet, har givet HTTP-metoden QUERY status som 'Forslag til standard' og offentliggjort den tilhørende specifikation RFC 10008. Metoden QUERY ligner ved dataoverførsel til serveren metoden POST, men adskiller sig ved ikke at være orienteret mod skrivning af data og ændring af tilstand, men mod dannelsen af forespørgsler til læsning.

I forhold til de opgaver, der skal løses, minder den nye metode om GET og giver mulighed for at sende forespørgsler, der kan gentages eller genstartes uden at ændre tilstanden på serveren. Som med metoden POST sendes forespørgselsparametrene i QUERY ikke i URI, men i forespørgselens krop. Denne tilgang muliggør overførsel af et stort antal parametre i forespørgslen, som overstiger grænsen for størrelsen på parametre i GET-metoden (8000 byte).

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

De parametre, der sendes ved hjælp af metoden QUERY, vises ikke i logfilerne servere, hvilket på den ene side gør det vanskeligt at analysere forespørgsler og diagnosticere problemer, men på den anden side giver mulighed for at skjule fortrolige oplysninger fra proxyservernes logfiler.

Blandt anvendelsesområderne for QUERY-metoden nævnes indsendelse af forespørgsler til Web API'er, der returnerer resultater i JSON- eller XML-format, eller backends, der genererer indhold. For at afgøre muligheden for at bruge den nye metode ved henvendelse til server foreslås det at bruge metoden OPTIONS, og for at bestemme understøttede formater metode HEAD:

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

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

Metoden QUERY understøtter caching - proxyservere eller behandlere kan gemme resultatet af en forespørgsel, tildele det et URI til efterfølgende adgang via metoden GET og returnere information om udgivelsen af den cachede version gennem headeren "Last-Modified". For at kontrollere ændringer siden den sidste forespørgsel kan headeren "If-Modified-Since" anvendes. For at angive alternative udførelsesmuligheder kan headerne "Content-Location" og "Location" angives, hvor forskellen er, at den første overfører et link til at få resultatet af den tidligere udførte forespørgsel, mens den anden er beregnet til at gentage forespørgslen med de samme parametre.

> 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

Udover typen "application/x-www-form-urlencoded" kan udvidede formater også bruges direkte til at sende parametre i QUERY-forespørgsler, såsom JSONPath (application/jsonpath), XSLT (application/vnd.xslt+xml) og SQL (application/sql). De understøttede formater returneres serveren i headeren Accept-Query.

> 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»]

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster