Le méthode HTTP QUERY standardisée, combinant les possibilités de GET et POST

Le comitĂ© d'ingĂ©nierie de l'IETF (Internet Engineering Task Force), chargĂ© du dĂ©veloppement des protocoles et de l'architecture du rĂ©seau Internet, a attribuĂ© au mĂ©thode HTTP QUERY le statut de « standard proposĂ© » et a publiĂ© la spĂ©cification associĂ©e RFC 10008. La mĂ©thode QUERY envoie des donnĂ©es au serveur de la mĂȘme maniĂšre que la mĂ©thode POST, mais se distingue par son orientation, non pas sur l'Ă©criture de donnĂ©es et la modification d'Ă©tat, mais sur la formulation de requĂȘtes de lecture.

Concernant les tĂąches rĂ©solues, la nouvelle mĂ©thode est proche de GET et permet d'envoyer des requĂȘtes qui peuvent ĂȘtre rĂ©pĂ©tĂ©es ou redĂ©marrĂ©es sans modification de l'Ă©tat sur le serveur. Comme dans la mĂ©thode POST, les paramĂštres de la requĂȘte en QUERY ne sont pas transmis dans l'URI, mais dans le corps de la requĂȘte. Cette approche permet de transmettre un grand volume de paramĂštres dans la requĂȘte, dĂ©passant la limite de taille des paramĂštres dans la mĂ©thode GET (8000 octets).

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

Les paramĂštres envoyĂ©s via la mĂ©thode QUERY ne sont pas reflĂ©tĂ©s dans les journaux serveurs, ce qui, d'une part, complique l'analyse des requĂȘtes et le diagnostic des problĂšmes, mais d'autre part, permet de masquer des donnĂ©es confidentielles dans les journaux des serveurs proxy.

Parmi les domaines d'application de la mĂ©thode QUERY, il est mentionnĂ© l'envoi de requĂȘtes Ă  des API Web, qui renvoient des rĂ©sultats au format JSON ou XML, ou Ă  des backends gĂ©nĂ©rant du contenu. Pour dĂ©terminer la possibilitĂ© d'utilisation de la nouvelle mĂ©thode lors de l'appel Ă  serveur il est proposĂ© d'utiliser la mĂ©thode OPTIONS, et pour dĂ©terminer les formats pris en charge, la mĂ©thode HEAD :

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

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

La mĂ©thode QUERY prĂ©voit la prise en charge de la mise en cache — les serveurs proxy ou les gestionnaires peuvent conserver le rĂ©sultat de l'exĂ©cution de la requĂȘte, lui attribuer un URI pour un appel ultĂ©rieur via la mĂ©thode GET et renvoyer des informations sur la fourniture de la version mise en cache par l'en-tĂȘte « Last-Modified ». Pour vĂ©rifier l'existence de changements depuis la derniĂšre requĂȘte, l'en-tĂȘte « If-Modified-Since » peut ĂȘtre utilisĂ©. Pour indiquer des alternatives pour l'exĂ©cution de la requĂȘte, des en-tĂȘtes « Content-Location » et « Location » peuvent ĂȘtre spĂ©cifiĂ©s dans la rĂ©ponse, la diffĂ©rence Ă©tant que le premier transmet un lien pour obtenir le rĂ©sultat de la requĂȘte prĂ©cĂ©demment effectuĂ©e, tandis que le second est destinĂ© Ă  rĂ©pĂ©ter la requĂȘte avec les mĂȘmes paramĂštres.

> QUERY /contacts HTTP/1.1
> Host: example.org
> Content-Type: application/x-www-form-urlencoded
> Accepter: 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
DerniÚre modification: sam., 25 août 2012 23:34:45 GMT
Date: dim., 17 nov. 2024, 16:10:24 GMT

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

En plus du type « application/x-www-form-urlencoded », des formats avancĂ©s comme JSONPath (application/jsonpath), XSLT (application/xslt+xml) et SQL (application/sql) peuvent ĂȘtre utilisĂ©s directement pour transmettre des paramĂštres dans les requĂȘtes QUERY. Les formats pris en charge sont retournĂ©s serveur dans l'en-tĂȘte 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
> Accepter: application/json
>
> $..[
> ?@.errata_status_code=="Rejected"
> && @.submit_date>"2024"
> ]
> ["doc-id"]

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster