Standardiziran HTTP-metod QUERY, koji kombinira mogućnosti GET i POST

Inženjerski odbor IETF (Internet Engineering Task Force), koji se bavi razvojem protokola i arhitekture interneta, dodijelio je HTTP metodi QUERY status "Prijedlog standarda" i objavio povezanu specifikaciju RFC 10008. Metoda QUERY po načinu slanja podataka na poslužitelj ponavlja metodu POST, ali se razlikuje od nje u tome što nije usmjerena na unos podataka i promjenu stanja, već na formiranje zahtjeva za čitanje.

U odnosu na riješene zadatke, nova metoda je slična GET-u i omogućava slanje zahtjeva koji se mogu ponoviti ili ponovno pokrenuti bez mijenjanja stanja na poslužitelju. Kao i u metodi POST, parametri zahtjeva u QUERY-u ne šalju se u URI, već u tijelu zahtjeva. Ovaj pristup omogućuje prijenos velike količine parametara u zahtjevu, premašujući limit veličine parametara u metodi GET (8000 bajtova).

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

Parametri poslani putem metode QUERY ne odražavaju se u zapisnicima poslužitelja, što s jedne strane otežava analizu zahtjeva i dijagnostiku problema, ali s druge strane omogućava skrivanje povjerljivih podataka iz zapisnika posredničkih poslužitelja.

Među područjima primjene metode QUERY spominje se slanje zahtjeva prema Web API-ju, koji vraćaju rezultate u formatu JSON ili XML, ili backendovima koji generiraju sadržaj. Za određivanje moguća korištenja nove metode pri pristupu poslužitelju preporučuje se koristiti metodu OPTIONS, a za određivanje podržanih formata metodu HEAD:

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

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

U metodi QUERY predviđena je podrška za кеширање — posrednički poslužitelji ili obrada mogu pohraniti rezultat izvršenja zahtjeva, dodijeliti mu URI za kasnije pozivanje putem metode GET i vratiti informacije o dodjeli keširane verzije putem zaglavlja "Last-Modified". Za provjeru promjena od posljednjeg zahtjeva može se koristiti zaglavlje "If-Modified-Since". Za naznačavanje alternativnih opcija izvršenja zahtjeva mogu se koristiti zaglavlja "Content-Location" i "Location", čija je razlika u tome što prvo predaje vezu za dobivanje rezultata prethodno izvršenog zahtjeva, dok je drugo namijenjeno ponovnom izvršavanju zahtjeva s istim parametrima.

> QUERY /contacts HTTP/1.1
> Host: example.org
> Content-Type: application/x-www-form-urlencoded
> Prihvatiti: 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: Sub, 25 Kol 2012 23:34:45 GMT
Date: Ned, 17 Stu 2024, 16:10:24 GMT

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

Osim tipa «application/x-www-form-urlencoded» za prijenos parametara u QUERY zahtjevima mogu se izravno koristiti i nadograđeni formati, kao što su JSONPath (application/jsonpath), XSLT (application/xslt+xml) i SQL (application/sql). Podržani formati vraćaju se serverom u headeru 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
> Prihvatiti: application/json
>
> $..[
> ?@.errata_status_code==»Rejected»
> && @.submit_date>»2024″
> ]
> [«doc-id»]

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster