Golang (net/http) Web Server Oluşturma

Go dili içerisinde, build-in bir paket olan net/http/ oldukça pratik bir şekilde web server işlemleri gerçekleştirmemizi mümkün kılmakta. Get, Head, Post, PostForm isteklerini HTTP ve HTTPS üzerinden gerçekleştirebilen http paketi ile ilgili olarak bu yazıda ListenAndServe örneğinden bahsedeceğim. Temel kullanımı şu şekilde:

http.Handle("/foo", fooHandler)
 
http.HandleFunc("/bar", func(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path))
})
 
log.Fatal(http.ListenAndServe(":8080", nil))

Temel uygulamamızda ise 9000 nolu port üzerinden url path değerini sayfa içeriğine basacağız.

O halde başlayalım.

Go http Paketi İle Web Server Oluşturma

Örnek işlemler süresince localhost üzerinden işlemlerinizi yürütebilirsiniz. Ben remote server üzerinden örneklendirmeyi paylaşıyor olacağım.

Aşağıdaki örnek en basit haliyle ornekwebsitesi-veya-ip-adresi:9000 üzerinden yayın yapmamızı mümkün kılmakta. İlgili post adresinden sonraki slash (/) işareti ardındaki değeri sayfadaki Current Value satırına ekleyeceğiz.

package main
 
import (
    "fmt"
    "net/http"
    "html"
    "log"
)
 
func urlHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Current Value: %s", html.EscapeString(r.URL.Path))
}
 
func main() {
    http.HandleFunc("/", urlHandler)
    log.Fatal(http.ListenAndServe(":9000", nil))
}

Yukarıdaki kodu çalıştırdığınızda (go run *.go) 9000 port üzerinden yayınlanan içeriği görüntüleyebilirsiniz. İnternet tarayıcınızdan ilgili sayfayı açtığınızda karşınıza Current Value: yazısı çıkacaktır. URL kısmında, port sonrasına ekleyeceğiniz herhangi bir değerle (/deneme vb.) birlikte sayfa güncelleyerek ve Current Value: satırına eklenmiş olacaktır.

Örnekte yer alan html paketi URL’e eklenen değerin düzenlenmesinde, log ise olası bir hatanın loglanmasında kullanılmaktadır. Daha basit bir yapı içerisinde örneğimizi şu şekilde de işleme alabiliriz.

package main
 
import (
    "fmt"
    "net/http"
)
 
func urlHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Current Value: %s", r.URL.Path)
}
 
func main() {
    http.HandleFunc("/", urlHandler)
    http.ListenAndServe(":9000", nil)
}

Her iki örnekte de yer alan r.URL.Path url sonrasında eklenen değeri bize verecektir. İlgili değeri çekerken port sonrası değer alınacağı için veri / (slash) işaretini de kapsamaktadır. Şayet / (slash) işareti olmadan ilgili değeri kullanmak istersek r.URL.Path[1:] ile 1. karakter sonrasını seçebiliriz.

Go Hakkındaki Yazılardan Haberdar Olmak İster Misin?

E-posta listesine katılarak yeni yazılardan haberdar olabilirsin.

One reply on “Golang (net/http) Web Server Oluşturma

Leave a Reply