Büyük resim
İstemci, sunucu ve istek/yanıt döngüsü
Web’deki her etkileşim bir istek ve ona verilen bir yanıttan oluşur.
Kavramı anlayalım
İstemci isteği başlatan taraftır; sunucu bekleyen ve yanıt veren taraftır. Tarayıcı bir istemcidir, ama Next.js sunucusu da API’ye istek attığında istemci rolündedir. Roller programın türüne değil, o anki ilişkiye göre belirlenir.
Bir HTTP isteği bir metot (GET, POST, PUT, DELETE…), bir hedef yol, başlıklar ve isteğe bağlı bir gövde taşır. Yanıt bir durum kodu (200, 404, 500…), başlıklar ve gövdeden oluşur. GET gibi ‘güvenli’ metotlar sunucudaki durumu değiştirmemelidir; bu yüzden tarayıcılar, önbellekler ve arama motorları onları rahatça tekrar edebilir.
Sunucu tarafında her istek bağımsız ele alınır ve çoğu zaman aynı anda yüzlerce istek işlenir. Bu, sunucu kodunun paylaşılan durumla dikkatli olması gerektiği anlamına gelir: bir istekte oluşturulan nesne, başka bir kullanıcının isteğine sızmamalıdır.
Hangi metodu kullanacağın, önbellekleme, tekrar deneme ve güvenliği doğrudan etkiler.
Veri silen veya değiştiren işlemleri GET ile yapmak; bir bağlantı önizleyicisi bile onu tetikleyebilir.
Aynı konu. Üç farklı derinlik.
GET /api/posts/ilk-yazi HTTP/1.1
Host: api.example.test
HTTP/1.1 200 OK
Content-Type: application/json
{"title":"İlk yazı"}En basit döngü: bir istek, bir yanıt.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
Bir bülten aboneliğini iptal eden bağlantı e-postada ‘GET /unsubscribe?id=5’ olarak gönderiliyor ve bazı kullanıcılar e-postayı açmadan aboneliklerinin iptal edildiğini söylüyor. Neden?
Çözümü ve açıklamasını göster
E-posta güvenlik tarayıcıları ve bağlantı önizleyicileri GET bağlantılarını otomatik açar.
Çözüm: GET ile onay sayfası göster, iptali POST ile yap.GET güvenli kabul edildiği için otomatik araçlar onu çekinmeden çağırır. Durum değiştiren işlem POST olmalıdır.