Standartlaşdırılmış HTTP metodu QUERY, GET və POST imkanlarını birləşdirir

IETF (Internet Engineering Task Force) mühəndislik komitəsi, internet protokollarının və arxitekturasının inkişafı ilə dərindən məşğuldur, HTTP metoduna QUERY «Təklif olunan standart» statusunu verib və ona uyğun RFC 10008 spesifikasını dərc edib. QUERY metodu, POST metoduna oxşar olaraq verilərin serverə göndərilməsi üsuludur, lakin o, verilərin yazılması və vəziyyətin dəyişdirilməsi deyil, oxuma sorğularının formalaşdırılması yönündədır.

Həll olunan məsələlər baxımından bu yeni metod GET-ə yaxındır və vəziyyəti dəyişmədən təkrar edilə bilən və ya fəaliyyətə başlanıla bilən sorğular göndərməyə imkan tanıyır. QUERY metodunda sorğu parametrləri URI-də deyil, sorğu bədənində ötürülür. Bu yanaşma, GET metodunda parametrlərin ölçüsü limitindən (8000 bayt) artıq olan çox sayda parametrin ötürülməsinə imkan verir.

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 metodu ilə göndərilən parametrlər loglarda əks olunmur serverləri üçün mükəmməl seçim edir., bu bir tərəfdən sorğuların analizini və problemlərin diaqnozunu çətinləşdirir, digər tərəfdən isə proxy serverlərin loglarından məxfi məlumatların gizlənməsinə imkan tanıyır.

QUERY metodunun istifadə sahələri arasında JSON və ya XML formatında nəticələr verən Web API-lərə sorğuların göndərilməsi və ya məzmun yaradan backend-lərlə əlaqə qurmağı qeyd etmək mümkündür. Yeni metodun istifadəsinin mümkünlüyünü müəyyən etmək üçün sunucunuz OPTIONS metodundan, dəstəklənən formatları müəyyən etmək üçün isə HEAD metodundan istifadə edilməsi təklif olunur:

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

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

QUERY metodunda keşləmə dəstəyi nəzərdə tutulub — proxy serverlər və ya emalçılar sorğunun yerinə yetirilməsi nəticəsini saxlaya, ona gələcək GET metodu ilə çağırış üçün bir URI təyin edə və keşlənmiş versiya haqqında məlumatı "Last-Modified" başlığı vasitəsilə qaytara bilərlər. Keçmiş sorğudan bəri dəyişikliklərin olub-olmadığını yoxlamaq üçün "If-Modified-Since" başlığı tətbiq oluna bilər. Sorğunun alternativ icra variantlarını göstərmək üçün cavabda "Content-Location" və "Location" başlıqları göstərilə bilər, bunların fərqi ondadır ki, birincisi əvvəlki icra olunan sorğunun nəticəsini alacaq linki ötürür, ikincisi isə eyni parametrlərlə sorğunu təkrar etməyə yönəldir.

> 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

«application/x-www-form-urlencoded» tipi ilə yanaşı, QUERY sorğularında parametr ötürmək üçün doğrudan da inkişaf etmiş formatlardan, məsələn JSONPath (application/jsonpath), XSLT (application/xslt+xml) və SQL (application/sql) istifadə oluna bilər. Dəstəklənən formatlar server Accept-Query başlığında qaytarılır.

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

Mənbə: opennet.ru

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster