irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Araya Giren Adam
Web sunucunuza bir istek (Request) geldiğinde, bu isteğin ana fonksiyona (Handler) ulaşmadan önce bazı kontrollerden geçmesi gerekebilir.- "Bu kullanıcı giriş yapmış mı?" (Auth)
- "İstek ne kadar sürdü?" (Logging)
- "Gelen veri JSON formatında mı?" (Validation)
Basit Bir Loglama Middleware'i Yazmak
Standart kütüphane kullanarak bir loglama katmanı oluşturalım.
Kod:
package main
import ("fmt""log""net/http""time")
// Ana işi yapan fonksiyon (Handler)func anasayfa(w http.ResponseWriter, r *http.Request) {fmt.Fprintln(w, "Merhaba Gopher!")}
// Middleware Fonksiyonufunc LoggerMiddleware(next http.HandlerFunc) http.HandlerFunc {return func(w http.ResponseWriter, r *http.Request) {baslangic := time.Now()
// 1. İşlemden ÖNCE yapılacaklar<br> log.Printf("İstek Başladı: %s %s", r.Method, r.URL.Path)<br><br> // 2. İsteği asıl fonksiyona (next) ilet<br> next(w, r)<br><br> // 3. İşlemden SONRA yapılacaklar<br> sure := time.Since(baslangic)<br> log.Printf("İstek Bitti. Süre: %s", sure)<br>}<br>
}
func main() {// Handler'ı Middleware ile sarmalıyoruzhttp.HandleFunc("/", LoggerMiddleware(anasayfa))
log.Println("Sunucu 8080 portunda...")<br>http.ListenAndServe(":8080", nil)<br>
}