Komiteti inxhinierik IETF (Internet Engineering Task Force), që merret me zhvillimin e protokolleve dhe arkitekturës së internetit, i ka dhënë metodës HTTP QUERY statusin «Proposed Standard» dhe ka publikuar specifikimin përkatës RFC 10008. Për nga mënyra e dërgimit të të dhënave te serveri, metoda QUERY i ngjan metodës POST, por ndryshon prej saj sepse nuk është e orientuar drejt shkrimit të të dhënave dhe ndryshimit të gjendjes, por drejt formimit të kërkesave për lexim.
Për nga detyrat që zgjidh, metoda e re është e afërt me GET dhe lejon dërgimin e kërkesave që mund të përsëriten ose rinisen pa ndryshuar gjendjen në server. Ashtu si te metoda POST, parametrat e kërkesës te QUERY nuk kalohen në URI, por në trupin e kërkesës. Kjo qasje bën të mundur dërgimin e një vëllimi të madh parametrash në kërkesë, duke tejkaluar kufirin e madhësisë së parametrave te metoda GET (8000 bajt).
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
Parametrat e dërguar përmes metodës QUERY nuk pasqyrohen në logje serverësh, gjë që nga njëra anë e vështirëson analizën e kërkesave dhe diagnostikimin e problemeve, por nga ana tjetër bën të mundur fshehjen e të dhënave konfidenciale nga logjet e proxy-serverëve.
Ndër fushat e përdorimit të metodës QUERY përmendet dërgimi i kërkesave te Web API që kthejnë rezultate në format JSON ose XML, ose te backend-et që gjenerojnë përmbajtje. Për të përcaktuar mundësinë e përdorimit të metodës së re gjatë aksesit te serverit propozohet të përdoret metoda OPTIONS, ndërsa për të përcaktuar formatet e mbështetura metoda HEAD:
> OPTIONS /contacts HTTP/1.1
> Host: example.org
HTTP/1.1 200 OK
Allow: GET, QUERY, OPTIONS, HEAD
Metoda QUERY parashikon mbĂ«shtetje pĂ«r cache â proxy-serverĂ«t ose pĂ«rpunuesit mund tĂ« ruajnĂ« rezultatin e ekzekutimit tĂ« kĂ«rkesĂ«s, tâi caktojnĂ« atij njĂ« URI pĂ«r akses tĂ« mĂ«vonshĂ«m pĂ«rmes metodĂ«s GET dhe tĂ« kthejnĂ« informacion pĂ«r ofrimin e versionit tĂ« ruajtur nĂ« cache pĂ«rmes header-it «Last-Modified». PĂ«r tĂ« kontrolluar nĂ«se ka ndryshime qĂ« nga kĂ«rkesa e mĂ«parshme, mund tĂ« pĂ«rdoret header-i «If-Modified-Since». PĂ«r tĂ« treguar variante alternative tĂ« ekzekutimit tĂ« kĂ«rkesĂ«s, nĂ« pĂ«rgjigje mund tĂ« jepen header-at «Content-Location» dhe «Location»; ndryshimi mes tyre Ă«shtĂ« se i pari jep lidhjen pĂ«r marrjen e rezultatit tĂ« njĂ« kĂ«rkese tĂ« ekzekutuar mĂ« parĂ«, ndĂ«rsa i dyti shĂ«rben pĂ«r pĂ«rsĂ«ritjen e kĂ«rkesĂ«s me tĂ« njĂ«jtĂ«t parametra.
> 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
Përveç llojit «application/x-www-form-urlencoded», për dërgimin e parametrave në kërkesat QUERY mund të përdoren drejtpërdrejt edhe formate të zgjeruara, si JSONPath (application/jsonpath), XSLT (application/xslt+xml) dhe SQL (application/sql). Formatet e mbështetura kthehen server në titullin 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==»Refuzuar»
> && @.submit_date>»2024âł
> ]
> [«doc-id»]
Burimi: opennet.ru
