Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
net/http ile HTTP Server: ServeMux Pattern Routing, Handler, Middleware ve Timeout'lar
Go'da bir HTTP servisi için standart kütüphane yeterli: ServeMux 1.22'den beri method ve wildcard pattern'lerini en spesifik olan kazanır kuralıyla eşliyor, middleware ise bir handler'ı saran sıradan bir fonksiyon. Bookstore API'sinin httpapi package'ına taşınması, RequestID ve Logging middleware'leri, CORS ve CrossOriginProtection, 307 redirect, pattern çakışması panic'i, WriteTimeout'un handler'ı durdurmaması ve slowloris'e karşı http.Server timeout'ları.
Go'da HTTP Client: http.Client, Timeout'lar, context ile İptal, Transport'u Yeniden Kullanmak ve Retry
Go'da http.DefaultClient'ın timeout'u yoktur; üretimde paylaşılan tek bir http.Client, her aşama için Transport timeout'ları, deneme başına Client.Timeout ve toplam bütçe için context kullanılır. Hangi timeout'un hangi aşamayı kapsadığı, Go 1.27'nin küçük body'leri Close'ta okuyup bağlantıyı geri kazanması, MaxIdleConnsPerHost, 4xx/5xx kontrolü, backoff, jitter ve Retry-After ile retry, idempotency ve httptest ile client testi.