Sobes.tech
Junior

Sorgu parametreleri (query) yerine istek gövdesini (body) kullanabilir miyiz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, ama bu, isteğin türüne ve iletilen bilgilere bağlıdır.

Sorgu Parametreleri (Query Parameters)

  • ? işaretinden sonra URL'de anahtar=değer çiftleri olarak iletilir, & ile ayrılır.
  • Genellikle GET isteklerinde, verileri filtrelemek, sıralamak ve sayfalamak için kullanılır (örneğin: /api/items?category=electronics&sort=price).
  • Çoğu tarayıcı ve sunucuda boyut sınırına sahiptir.
  • Sunucu günlüklerinde ve tarayıcı geçmişinde görünür (hassas veriler için potansiyel güvenlik sorunu).
  • Kolayca önbelleğe alınabilir.

İstek Gövdesi (Request Body)

  • HTTP isteği gövdesinde iletilir.
  • Çoğunlukla POST, PUT, PATCH isteklerinde, büyük veri miktarlarını iletmek, kaynaklar oluşturmak veya güncellemek için kullanılır (örneğin: form gönderimi, JSON nesnesi).
  • Boyut açısından katı sınırları yoktur (sunucu yapılandırmaları çerçevesinde).
  • URL'de görünmez, bu da hassas verilerin iletimi için daha uygundur.
  • Varsayılan olarak tarayıcılar tarafından önbelleğe alınmaz.
  • Farklı veri türleri içerebilir (JSON, XML, formlar).

Farklılıkların karşılaştırmalı tablosu:

Kriter Sorgu Parametreleri İstek Gövdesi
Konum URL (? sonrası) HTTP isteği gövdesi
Tipik metodlar GET POST, PUT, PATCH
Kullanım Filtreleme, sıralama, sayfalamak Kaynak oluşturma/güncelleme, büyük veri iletimi
Boyut Sınırlı Pratikte sınırsız
Görünürlük URL'de görünür URL'de görünmez
Önbelleğe alma Kolayca önbelleğe alınabilir Varsayılan olarak önbelleğe alınmaz
Güvenlik Hassas veriler için daha az uygun Hassas veriler için daha uygundur

Hangi durumda hangisini kullanmalı:

  • Query Parameters yerine Body: Teorik olarak POST, PUT vb. metodlar için mümkündür, ancak önerilmez. Bu, HTTP metodlarının semantiğini bozabilir ve işlemeyi zorlaştırabilir. Çok nadiren kullanılır, genellikle çok basit durumlar veya özel mimariler içindir. Büyük veya yapılandırılmış verilerin sorgu dizisi aracılığıyla iletimi uygun değildir.
  • Body yerine Query Parameters: GET istekleri için mümkün değildir, çünkü HTTP standardı GET için gövde semantiğini tanımlamaz. Diğer metodlar (POST, PUT vb.) için gövde, veri iletiminin standart yoludur ve yapılandırılmış veya büyük hacimli verilerin iletimi için tercih edilir, ayrıca veriler hassas ise.

Çoğu durumda, yaygın kabul gören konvansiyonlara uyulması önerilir: sorgu parametreleri GET ile filtreleme/kimlik belirleme için, gövde ise durumu değiştiren isteklerde (POST, PUT, PATCH) veri göndermek için kullanılır.