A QUERY HTTP-módszert standardizálták, amely a GET és POST lehetőségeit ötvözi.

Az IETF (Internet Engineering Task Force) mérnöki bizottsága, amely az internetes protokollok és architektúra fejlesztésével foglalkozik, a QUERY HTTP-módszert "Javasolt szabvány" státuszba helyezte, és közzétette a kapcsolódó RFC 10008 specifikációt. A QUERY módszer az adatküldés szempontjából a POST módszerhez hasonlít, ám eltér attól abban, hogy nem az adatok rögzítésére és az állapot megváltoztatására, hanem az olvasási kérések létrehozására összpontosít.

A megoldandó feladatok szempontjából az új módszer a GET-hez áll közel, és lehetővé teszi olyan kérések küldését, amelyek megismételhetők vagy újraindíthatók anélkül, hogy állapotváltozást okoznának a szerveren. A POST módszerhez hasonlóan a QUERY kérés paraméterei nem az URI-ben, hanem a kérés törzsében kerülnek átadásra. Ez a megközelítés lehetőséget biztosít arra, hogy nagyméretű paramétereket adjunk át a kérésben, meghaladva a GET módszer paraméterméret-korlátját (8000 bájt).

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

A QUERY módszeren keresztül elküldött paraméterek nem jelennek meg a naplókban szerverek, ami egyrészt megnehezíti a kérések elemzését és a problémák diagnosztizálását, másrészt lehetőséget teremt a bizalmas adatok elrejtésére a proxyk naplóiból.

A QUERY módszer alkalmazási területei között említésre kerül a Web API-okhoz való kérések küldése, amelyek JSON vagy XML formátumban adnak vissza eredményeket, vagy a tartalmat generáló backendekhez. Az új módszer használatának lehetősége a következőkre vonatkozik szerverhez ajánlott az OPTIONS módszer használata, míg a támogatott formátumok meghatározásához a HEAD módszer:

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

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

A QUERY módszer támogatja a gyorsítótárazást — a proxyk vagy kezelők tárolhatják a kérés végrehajtásának eredményét, hozzárendelhetnek neki egy URI-t az azt követő GET módszerrel való megkereséshez, és visszaküldhetik az információt a gyorsított verzió kiadásáról az "Last-Modified" fejlécen keresztül. A korábbi kérés óta bekövetkezett változások ellenőrzéséhez az "If-Modified-Since" fejléc használható. Az alternatív végrehajtási lehetőségek megadásához a válaszban a "Content-Location" és a "Location" fejlécek is feltüntethetők, amelyek eltérése abban rejlik, hogy az első a korábban végrehajtott kérés eredményének megkapásához vezető hivatkozást ad, míg a második azonos paraméterekkel megismételni kívánt kérésre szolgál.

> 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

Az "application/x-www-form-urlencoded" típus mellett a QUERY lekérdezésekben paraméterek továbbítására közvetlenül az olyan kiterjesztett formátumok is használhatók, mint a JSONPath (application/jsonpath), XSLT (application/xslt+xml) és SQL (application/sql). A támogatott formátumok a szerverrel Accept-Query fejlécben kerülnek visszaadásra.

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

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster