Yeni HTTP SEARCH metodu
(httptoolkit.tech)-
IETF'ye yeni bir Draft olarak eklenen SEARCH metodunun tanıtımı
-
Karmaşık verileri getirmek için mevcut GET/POST tek başına verimsiz kalıyor
SEARCH /customers HTTP/1.1
Host: example.com
Content-Type: application/sql
SELECT username, email
WHERE DATEDIFF(DAY, GETDATE(), signup_date) > 7
-
Pratikte SQL cümlelerinin standart olarak kullanılacağı anlamına gelmiyor; istek gövdesinde arama için bu tür içeriklerin taşınabilmesi anlamına geliyor
-
Böylece tek bir URL için GET, POST ve SEARCH'in hepsi mümkün hale geliyor
-
Accept-Search başlığı üzerinden aramada kullanılacak formatlar belirtilebiliyor:
→ Accept-Search: application/sql, application/graphql
- WebDAV'da yer alan SEARCH metodu standardını temel alıyor (rfc5323)
9 yorum
OData, neredeyse benzer şekilde bu tür sorgulama yapan bir standart. Ama application/sql ve application/graphql'ın aynı endpoint'te de kullanılabileceği söylenince... bunu gözümde canlandırmak biraz zor.
Kullanım amacı açısından, SQL'i doğrudan çalıştırmak sorunlu olduğunda ve Elasticsearch'teki gibi anlamsal olarak
GETolsa da HTTP Body ekleyerek sorgulama yapmak istendiğinde kullanılabilecek bir şey gibi görünüyor.Yazının giriş kısmında “it was recently adopted as an IETF draft standard” deniyor; burada sözü edilen “recently” gerçekten 2015 mi? Benim gördüğüm taslak şu: https://tools.ietf.org/html/draft-snell-search-method-00, bu yüzden acaba daha yeni bir değişiklik var mı diye merak ettim.
https://datatracker.ietf.org/doc/… adresinde.
Görünüşe göre yakın zamanda, 2021-03-31 tarihinde yüklenmiş.
Gövdede bilgi gönderilecekse PUT ya da POST kullanmak gerekir.
Bunlarda cache kullanılamadığı için
SEARCH diye bir şey de kullanılabilir gibi görünüyor.
Nasıl olsa sadece accept edildiği durumda gönderilirse yeterli.
get ve post'un yarattığı rahatsızlığı iyileştirme yönüyle bakınca akla GraphQL geliyor
Sorguyu request body ile göndermeye başlayınca, bir noktada (çok da düşünülmeden yapılmış bir siteyse) SQL Injection gibi sorunlar çıkacakmış gibi bir his oluşuyor..
Sanırım bunu body’si olan bir GET gibi anlamak mümkün. Zaten body için doğrulama yapmak gerekecek...
Öyle işte..