İhtiyaca göre daha kompleks handler’lar, function’lar da oluşturulabilir.
type AboutMe struct {
Name string
Description string
}
func aboutHandler(w http.ResponseWriter, r *http.Request) {
about := AboutMe{}
about.Name = "eyüp dalan"
about.Description = "software developer"
b, err := json.Marshal(about)
if (err != nil) {
panic(err)
}
w.Write(b)
}
Örneğin yukarıdaki örnek, ilkine nazaran biraz daha kompleks.
İlk olarak bir AboutMe isimli, Name ve Desription adında iki string property’si olan bir struct tanımlanır. “aboutHandler” fonsiyonu da bu struct tipinde bir datayı json’a çevirerek servis üzerinden dönmesini sağlar. Obje json’a “json.Marshal” ile çevrilir. Bir hata oluşması durumunda hata “panic” metodu ile fırlatılır. Son olarak da oluşan json bayte array http.ResponseWriter ile response olarak dönülür.
main fonksiyonunda bu handler için yeni bir endpoint eklenir. Sonuç olarak maşn fonksiyonu aşağıdaki gibi olur:
func main() {
http.HandleFunc("/", handler)
http.HandleFunc("/about", aboutHandler)
http.ListenAndServe(":8080", nil)
}
http.HandleFunc("/", handler)
http.HandleFunc("/about", aboutHandler)
http.ListenAndServe(":8080", nil)
}