0Pricing
Go Academy · Ders

HTTP Sunucusu Oluşturma

ListenAndServe, HandlerFunc ve ServeMux

HTTP Sunucusu Oluşturma, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

net/http paketi

Go'nun standart kitaplığı net/http, harici bağımlılıklar olmadan üretimde kullanılabilecek HTTP/1.1 ve HTTP/2 sunucusu sağlar.

Temel sunucu

http.HandleFunc ile bir işleyici kaydedin ve http.ListenAndServe ile dinlemeyi başlatın:

http.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, "Hello, World!")
})
log.Fatal(http.ListenAndServe(":8080", nil))

http.Handler arayüzü

ServeHTTP(ResponseWriter, *Request) uygulayan her tür bir http.Handler'dır. Veritabanı veya yapılandırma içeren durum bilgili işleyiciler için bunu kullanın.

type App struct{ db *sql.DB }

func (a *App) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    // use a.db
}

ServeMux

http.NewServeMux() yalıtılmış bir yönlendirici oluşturur. Genel varsayılan mux'ı kullanmaktan kaçınmak için bunu http.ListenAndServe'e geçirin; bu, kitaplıklarda daha güvenlidir.

mux := http.NewServeMux()
mux.HandleFunc("/api/users", usersHandler)
http.ListenAndServe(":8080", mux)

Durum kodlarıyla yanıt verme

Gövdeyi yazmadan önce w.WriteHeader(code) ile durum kodunu yazın. Yalnızca w.Write çağrısı yaparsanız durum varsayılan olarak 200 olur.

w.WriteHeader(http.StatusCreated)
w.Write([]byte("created"))

JSON yanıtları yazma

Gövdeyi yazmadan önce Content-Type'ı ayarlayın, ardından json.Encoder ile kodlayın:

w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(data)

İsteği okuma

Yönteme, URL'ye, üstbilgilere, sorgu parametrelerine ve gövdeye *Request yapısı üzerinden erişin.

r.Method          // "GET", "POST", ...
r.URL.Path        // "/api/users"
r.URL.Query().Get("id") // query param
r.Header.Get("Authorization")

JSON istek gövdesini ayrıştırma

İstek gövdesini json.Decoder ile koddan çözün. Belleğin tükenmesini önlemek için gövde boyutunu http.MaxBytesReader ile sınırlayın.

r.Body = http.MaxBytesReader(w, r.Body, 1<<20)
var req CreateUserRequest
json.NewDecoder(r.Body).Decode(&req)

Sunucu yapılandırması

Yavaş istemci saldırılarını önlemek için özel bir http.Server ile zaman aşımlarını yapılandırın:

srv := &http.Server{
    Addr:         ":8080",
    Handler:      mux,
    ReadTimeout:  5 * time.Second,
    WriteTimeout: 10 * time.Second,
    IdleTimeout:  120 * time.Second,
}
srv.ListenAndServe()

HTTPS

HTTPS sunmak için srv.ListenAndServeTLS(certFile, keyFile) kullanın. Sertifikalar kendinden imzalı olabilir (geliştirme) veya Let's Encrypt'ten alınabilir (golang.org/x/crypto/acme/autocert aracılığıyla üretim).

İşleyici bileşimi

İş mantığını değiştirmeden ortak işlevler (günlükleme, kimlik doğrulama, kurtarma) eklemek için işleyicileri sarın. Değişiklikten sonra sonraki işleyiciyi döndürün.

Kısa Kontrol

Bir http.Server üzerinde ReadTimeout ve WriteTimeout neden ayarlanmalıdır?

Özet: HTTP sunucusu oluşturma

Temel noktalar:

  • Basit sunucular için HandleFunc + ListenAndServe
  • Üretim için zaman aşımlı özel http.Server
  • Yalıtılmış yönlendirme için ServeMux
  • JSON yanıtları için json.NewEncoder(w)

Sıkça Sorulan Sorular

“HTTP Sunucusu Oluşturma” dersi ücretsiz mi?

Evet — “HTTP Sunucusu Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“HTTP Sunucusu Oluşturma” dersinde ne öğreneceğim?

ListenAndServe, HandlerFunc ve ServeMux Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“HTTP Sunucusu Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. HTTP Sunucusu Oluşturma
  2. Yönlendirme ve Yol Parametreleri
  3. Ara Katman Örüntüsü
  4. Düzgün Kapatma
← Go Academy Sayfasına Dön