Web API Tasarımında Devrim: POST Taklidi Yapan Sorgular Tarihe Karışıyor
İnternet ağ teknolojilerini ve web standartlarını belirleyen IETF (Internet Engineering Task Force), web geliştiricilerini ve sistem mimarlarını yakından ilgilendiren tarihi bir yeniliğe imza attı. GET, POST, PUT, PATCH ve DELETE gibi klasikleşmiş yöntemlerin yanına, 2021 yılından beri üzerinde çalışılan yeni bir HTTP istek metodu olan QUERY (RFC 10008) resmen eklendi. Bu yeni standart, yıllardır web geliştiricilerinin karmaşık sorguları çalıştırmak için başvurduğu "geçici çözümleri" (hack) kökten bitirmeyi hedefliyor.
QUERY metodunun temel amacı; GET metodunun URL uzunluk sınırlarını aşarken, POST metodunun önbelleğe alınamama (caching) ve otomatik yeniden denenememe (retry) kısıtlamalarını ortadan kaldırmaktır.
Neden Yeni Bir Metoda İhtiyaç Duyuldu?
Bugüne kadar web uygulamalarında veritabanı sorguları ve aramalar için iki yöntem kullanılıyordu:
- GET Sınırları ve Güvenlik Açıkları: GET metodunda sorgu parametreleri URL'in sonuna eklenir. Ancak filtreler, sıralama kuralları ve tarih aralıkları arttıkça URL'ler okunamaz hale gelir. 8.000 karakter sınırını aşan URL'ler sunucularca reddedilir. Ayrıca hassas veriler tarayıcı geçmişine ve sunucu loglarına sızabilir.
- POST Güvenilmezliği: Geliştiriciler bu sınırları aşmak için sorgu parametrelerini POST metodunun gövdesinde (request body) JSON olarak göndermeye başladı (örneğin GraphQL sorguları). Ancak HTTP standartlarına göre POST metodunun sunucu durumunu değiştirebileceği varsayılır (idempotent değildir). Bu yüzden CDN’ler (Cloudflare, Akamai vb.), proxy sunucuları ve tarayıcılar POST isteklerini önbelleğe alamaz ve bağlantı koptuğunda işlemi otomatik olarak tekrarlayamaz (kullanıcının kredi kartından çift çekim yapılma riski gibi).
QUERY Metodu Neler Sunuyor ve Nasıl Yaygınlaşacak?
İşte yeni standart QUERY metodunun teknik avantajları:
| Özellik | GET | POST | QUERY (Yeni) |
|---|---|---|---|
| Sorgu Gövdesi (Body) | Desteklemez (URL kullanılır) | Destekler | Destekler |
| Güvenli ve Idempotent (Read-Only) | Evet | Hayır | Evet |
| Önbelleğe Alma (Caching) | Destekler | Desteklemez (İstisnalar hariç) | Destekler (Gövdeyle Birlikte) |
| Bağlantı Hatasında Otomatik Yeniden Deneme | Evet | Hayır | Evet |
RFC 10008 standardı, Cloudflare ve Akamai mühendislerinin katkılarıyla şekillendi. Çünkü bu şirketler web trafiğinin önbelleğe alınmasında doğrudan rol oynuyor. QUERY metodunun internet genelinde tam anlamıyla kullanılabilmesi için güvenlik duvarları, ters proxy'ler, CDN'ler ve API gateway sistemlerinin güncellenmesi gerekiyor. Şu anda Node.js ve PHP Laravel gibi platformlar QUERY metodunu yerleşik olarak desteklemek için çalışmalara başladı. Tarayıcıların ve JavaScript `fetch()` API'sinin yerel desteği ise kademeli olarak hayatımıza girecek.
Kaynak: The Register
Bu habere henüz yorum yapılmadı.