IETF-i (Internet Engineering Task Force) insenerikomisjon, mis tegeleb interneti protokollide ja arhitektuuri arendamisega, andis HTTP-meetodile QUERY «EelnÔudatud standardi» staatuse ja avaldas sellega seotud spetsifikatsiooni RFC 10008. QUERY meetod andmeedastuse korraldamise osas kordab POST meetodit, kuid erineb sellest mitte andmete kirjutamise ja oleku muutmise, vaid pÀringute lugemise loomise suunaga.
Uus meetod lahendatavate ĂŒlesannete poolest sarnaneb GET-iga ja vĂ”imaldab saata pĂ€ringuid, mida saab korrata vĂ”i taaskĂ€ivitada ilma serveri oleku muutmiseta. Nagu POST meetodil, edastatakse QUERY pĂ€ringu parameetrid mitte URI-s, vaid pĂ€ringu kehas. Selline lĂ€henemine vĂ”imaldab edastada suurtes kogustes parameetreid, mis ĂŒletavad GET meetodi parameetrite suuruse piiri (8000 bait).
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
QUERY meetodi kaudu edastatud parameetrid ei kajastu logides serverid, mis ĂŒhelt poolt raskendab pĂ€ringute analĂŒĂŒsi ja probleemide diagnoosimist, kuid teiselt poolt vĂ”imaldab see peita konfidentsiaalseid andmeid vahe-serverite logidest.
QUERY meetodi rakendamisvaldkondade hulgas mainitakse pĂ€ringute saatmist Web API-dele, mis tagastavad tulemuse JSON vĂ”i XML formaadis, vĂ”i tagakĂŒlgedele, mis genereerivad sisu. Uue meetodi kasutamise vĂ”imaluse mÀÀramiseks soovitatakse kasutada OPTIONS meetodit, ning toetatud formaatide mÀÀramiseks HEAD meetodit: serveri > OPTIONS /contacts HTTP/1.1
> Host: example.org
HTTP/1.1 200 OK
Allow: GET, QUERY, OPTIONS, HEAD
Lubatud: GET, QUERY, OPTIONS, HEAD
QUERY meetod toetab vahemĂ€lu â proksiserverid vĂ”i kĂ€sitlejad saavad salvestada pĂ€ringu tĂ€itmise tulemuse, mÀÀrata sellele URI hilisemaks juurdepÀÀsuks GET meetodi kaudu ja edastada teavet vahemĂ€lustatud versiooni kohta kaudu pĂ€ist "Last-Modified". Muudatuste olemasolu kontrollimiseks eelmise pĂ€ringu ajast vĂ”ib kasutada pĂ€ist "If-Modified-Since". PĂ€ringu tĂ€itmise alternatiivsete variantide nĂ€itamiseks vastuses vĂ”ivad olla pĂ€ised "Content-Location" ja "Location", mille erinevus seisneb selles, et esimene edastab lingi varasemalt tĂ€idetud pĂ€ringu tulemusele, samas kui teine on ette nĂ€htud sama pĂ€ringu kordamiseks samade parameetritega.
> QUERY /contacts HTTP/1.1
HTTP/1.1 200 OK
> Content-Type: application/x-www-form-urlencoded
> Accept: application/json
> select=surname,givenname,email&limit=10&match="email=*@example.*"
Allow: GET, QUERY, OPTIONS, HEAD
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
HTTP/1.1 200 OK
> Accept: application/json
Peale tĂŒĂŒbi "application/x-www-form-urlencoded" on QUERY pĂ€ringutes ka otse vĂ”imalik kasutada laienevaid formaate, nagu JSONPath (application/jsonpath), XSLT (application/xslt+xml) ja SQL (application/sql). Toetatud formaadid tagastatakse serverilt pĂ€ises Accept-Query.
> HEAD /contacts HTTP/1.1
HTTP/1.1 200 OK
Allow: GET, QUERY, OPTIONS, HEAD
Content-Type: application/xhtml
Accept-Query: application/x-www-form-urlencoded, application/jsonpath, application/sql
> QUERY /errata.json HTTP/1.1
HTTP/1.1 200 OK
> Content-Type: application/jsonpath
> Accept: application/json
>
> $..[
> ?@.errata_status_code=="Rejected"
> && @.submit_date>"2024"
> ]
> ["doc-id"]
Allikas: opennet.ru
