-- Go

Go ile WebServer Oluşturma

Merhabalar,

Bir çok web odaklı teknoloji örneğinde web sunucu ve client arasında konu işlenirken öncelikle temel bir web server oluşturma konusunu ele alırız. Bu işin temelini anlamak için tercih edilen yöntemdir. GOLang ile de benzer şekilde ilerleyerek öncelikle basit bir web server oluşturup belirli bir port üzerinden basit bir HTML yayını yapmayı inceleyeceğiz.

Bu HTML bizim yapacağımız gibi basit ve statik bir veri de olabilir, sunucu tarafında işlenmiş ya da veritabanı üzerinden elde edilerek kullanıcıya sunulacak bir sayfa da olabilir. Web tarafında temel bilgisi olanlar durumu net şekilde anlayacaktır diye umuyorum.

package main

import (
    "fmt"
    "net/http"
    "strconv"
)

// Human adında bir kişinin temel bilgilerini içeren struct'ı oluşturuyoruz.
type Human struct {
    FName string
    LName string
    Age int
}

func (hum Human) ServeHTTP(w http.ResponseWriter, r *http.Request) {

    // TEMEL ÖRNEK

    hum.FName = "Cihan"
    hum.LName = "Özhan"
    hum.Age = 27


    // BONUS

    // Ek bilgi almak için aşağıdaki çağrılar yapılabilir.
    // Not : URL'e gelen her çağrı için konsol ekranında çıktı gösterecektir.
    // Örnek çağrı : http://localhost:4000/products.go?xID=3
	
    // Formu parse etmek için.
    r.ParseForm()
	
    // Sunucudan form bilgisini almak için.
    fmt.Println(r.Form)
	
    // URL'in path bilgisini almak için.
    fmt.Println("path", r.URL.Path)
	
    // URL'in şema bilgisini almak için.
    // fmt.Println("scheme", r.URL.Scheme)
	
    // URL_Long bilgisini almak için.
    // fmt.Println(r.Form["url_long"])


   // HTML ÇIKTIYI EKRANA YAZ

    fmt.Fprint(w, "<table><tr><td><b>Ad</b></td><td><b>Soyad</b></td><td><b>Yaş</b></td></tr><tr><td>"+hum.FName+"</td><td>"+hum.LName+"</td><td>"+strconv.Itoa(hum.Age)+"</td></tr><tr></tr><tr></tr><tr><td><b>Path</b></td><td>"+ r.URL.Path +"</td></tr></table>")

    // Açık hali...

        //fmt.Fprint(w, "<table>
        // <tr>
        //    <td><b>Ad</b></td>
        //    <td><b>Soyad</b></td>
        //    <td><b>Yaş</b></td>
        // </tr>
        // <tr>
        //    <td>" + hum.FName + "</td>
        //    <td>" + hum.LName + "</td>
        //    <td>" + hum.Age + "</td>
        // </tr>
        // <tr> </tr>
        // <tr> </tr>
        // <tr>
        //    <td> <b>Path</b> </td>
        //    <td> "+ r.URL.Path +" </td>
        // </tr>
        // </table>")
}

func main() {

    var hum Human
    err := http.ListenAndServe("localhost:4000", hum)

    checkError(err)
}

func checkError(err error) {
    if err != nil {
        panic(err)
    }
}

Kodu yazdınız ve komut satırı üzerinden çalıştırdıktan sonra aşağıdaki URL’e request gerçekleştirerek ekrana gelen sayfayı ve sunucudan gönderdiğiniz HTML’i karşılaştırabilirsiniz.

localhost:4000

Tarayıcı çıktısı;

 

 

 

Faydalı olması dileğiyle…

İyi çalışmalar.
Cihan Özhan

Yorumla

Yorum