ინტერნეტ ინჟინერიის სამუშაო ჯგუფმა (IETF) ახალი სტანდარტი — RFC 10008 გამოაქვეყნა, რომელიც HTTP პროტოკოლს QUERY მეთოდით ამდიდრებს. ეს ინოვაცია შექმნილია იმისთვის, რომ გადაჭრას ის ტექნიკური გამოწვევები, რომლებიც დღეს GET და POST მეთოდების გამოყენებისას იქმნება.

ტრადიციულად, GET მოთხოვნები გამოიყენება მონაცემების მისაღებად, თუმცა მათ აქვთ შეზღუდვები URI-ს სიგრძესთან დაკავშირებით. როდესაც მოთხოვნა ძალიან მოცულობითია, დეველოპერები ხშირად POST მეთოდს მიმართავენ, თუმცა ეს უკანასკნელი არ არის გათვლილი უსაფრთხო და იდემპოტენტური ოპერაციებისთვის.

GETQUERYPOST
Safeyesyespotentially no
Idempotentyesyespotentially no
URI for query itselfyes (by definition)optional (Location response field)no
URI for query resultoptional (Content-Location response field)optional (Content-Location response field)optional (Content-Location response field)
Cacheableyesyesyes, but only for future GET or HEAD requests
Content (body)"no defined semantics"expected (semantics per target resource)expected (semantics per target resource)

ახალი QUERY მეთოდი ამ ხარვეზს ავსებს. მისი მთავარი უპირატესობა ისაა, რომ იგი აერთიანებს POST-ის მოქნილობას (მონაცემების სხეულში გადაცემა) და GET-ის უსაფრთხოებას. შედეგად, სერვერებსა და ქეშირების სისტემებს შეუძლიათ გაცილებით ეფექტურად მართონ მოთხოვნები, მათ შორის მათი ავტომატური ხელახალი გაშვება კავშირის შეწყვეტის შემთხვევაში.

რატომ არის ეს მნიშვნელოვანი?

სპეციფიკაციის თანახმად, QUERY მეთოდი სერვერს საშუალებას აძლევს, დაამუშაოს ინფორმაცია ისე, რომ არ მოხდეს რესურსის მდგომარეობის ცვლილება. ეს არის კრიტიკული მომენტი ვებ-აპლიკაციების სტაბილურობისთვის. გარდა ამისა, ახალი მეთოდი დაცულია ე.წ. „content sniffing“-ისგან და მკაცრად მოითხოვს სწორი Media Type-ების გამოყენებას.

სერვერებს შეუძლიათ, QUERY მოთხოვნებზე პასუხად დააბრუნონ 2xx კოდები, რაც ადასტურებს ოპერაციის წარმატებას. თუ მოთხოვნა არასწორად არის ფორმირებული, სტანდარტი ავალდებულებს სერვერს, დააბრუნოს შესაბამისი 4xx შეცდომის კოდი, რაც აადვილებს დებაგინგს და აძლიერებს უსაფრთხოებას.

განსხვავება არსებულ მეთოდებთან

  • უსაფრთხოება: QUERY მეთოდი იდემპოტენტურია, რაც ნიშნავს, რომ ერთი და იმავე მოთხოვნის რამდენჯერმე გაგზავნა არ გამოიწვევს სერვერზე არასასურველ გვერდით ეფექტებს.
  • ქეშირება: განსხვავებით POST-ისგან, QUERY მოთხოვნის შედეგები შეიძლება დაქეშირდეს, რაც ამცირებს დატვირთვას სერვერზე.
  • URI-ს შეზღუდვები: აღარ არის საჭირო მონაცემების URI-ში ჩატევა, რაც ხსნის პრობლემებს დიდ მოთხოვნებთან დაკავშირებით.

RFC 10008-ის მიღება მნიშვნელოვანი ნაბიჯია ვებ-სტანდარტების ევოლუციაში, რაც დეველოპერებს უფრო პროგნოზირებად და ეფექტურ ინსტრუმენტებს აძლევს მონაცემთა დამუშავებისთვის.

Method NameSafeIdempotentSpecification
QUERYyesyesSection 2 of RFC 10008
Field NameStatusStructured TypeReferenceComments
Accept-QuerypermanentListSection 3 of RFC 10008