This page has not been translated to English yet — showing the original Turkish version.

Kodlama

Go (Golang) ile İlk Web Sunucusu: Kurulum ve JSON API Örneği

Go dilini kurup standart kütüphaneyle sıfır paket kullanarak bir web sunucusu ve JSON API yazmayı gösteren başlangıç rehberi.

Go (Golang) ile İlk Web Sunucusu: Kurulum ve JSON API Örneği
Go (Golang) ile İlk Web Sunucusu: Kurulum ve JSON API Örneği

Go, Google'ın geliştirdiği, sade ve hızlı bir dildir. Docker, Kubernetes ve pek çok bulut aracı Go ile yazıldı. Tek bir çalıştırılabilir dosya üretmesi, dağıtımı çok kolaylaştırır.

Dilin kasıtlı olarak az özelliği vardır; bu sayede birkaç günde okunabilir ve çalışan servisler yazabilirsiniz. Bu rehberde sıfırdan bir JSON API yazacağız.

Step-by-step guide
  • 7 steps
  • 3 min read
In this guide
  1. Go'yu kurun
  2. Modül oluşturun
  3. En küçük web sunucusu
  4. Yol parametresi ve HTTP metodu
  5. JSON API yazın
  6. Tek dosyaya derleyin
  7. Sonraki adımlar
  1. Go'yu kurun

    go.dev/dl adresinden işletim sisteminize uygun kurulum dosyasını indirip çalıştırın. Sonra yeni bir terminalde:

    go version

    Çıktıda güncel sürüm numarasını görmelisiniz. Ayrı bir paket yöneticisi ya da sanal ortam gerekmez; araçlar dille birlikte gelir.

  2. Modül oluşturun

    mkdir sunucu
    cd sunucu
    go mod init ornek/sunucu

    go.mod dosyası projenizin adını ve bağımlılıklarını tutar.

  3. En küçük web sunucusu

    main.go dosyasını oluşturun:

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    		fmt.Fprintln(w, "Merhaba, Go!")
    	})
    	http.ListenAndServe(":8080", nil)
    }
    go run .

    Tarayıcıda http://localhost:8080 adresini açın. Sunucunuz çalışıyor. Durdurmak için terminalde Ctrl+C basın.

  4. Yol parametresi ve HTTP metodu

    Güncel Go sürümlerinde yönlendirici metodu ve yol parametresini doğrudan tanır:

    mux := http.NewServeMux()
    
    mux.HandleFunc("GET /selam/{ad}", func(w http.ResponseWriter, r *http.Request) {
    	ad := r.PathValue("ad")
    	fmt.Fprintf(w, "Selam %s\n", ad)
    })
    
    http.ListenAndServe(":8080", mux)

    /selam/Ayse adresi "Selam Ayse" döner. Eskiden bunun için üçüncü parti yönlendirici gerekirdi.

  5. JSON API yazın

    type Gorev struct {
    	ID    int    `json:"id"`
    	Baslik string `json:"baslik"`
    	Bitti bool   `json:"bitti"`
    }
    
    func main() {
    	gorevler := []Gorev{{1, "Go öğren", false}, {2, "API yaz", true}}
    
    	http.HandleFunc("GET /gorevler", func(w http.ResponseWriter, r *http.Request) {
    		w.Header().Set("Content-Type", "application/json")
    		json.NewEncoder(w).Encode(gorevler)
    	})
    
    	http.ListenAndServe(":8080", nil)
    }

    Dosyanın başındaki import listesine "encoding/json" ekleyin. Sonra curl localhost:8080/gorevler komutu JSON listesini döner. Yapı alanlarının yanındaki `json:"..."` etiketleri JSON anahtar adlarını belirler.

  6. Tek dosyaya derleyin

    go build -o sunucu .
    ./sunucu

    Ortaya çıkan dosya çalışmak için Go kurulumuna ihtiyaç duymaz. Başka bir Linux sunucuya kopyalayıp çalıştırabilirsiniz. Başka bir platform için derlemek için GOOS=linux GOARCH=amd64 go build yeterlidir.

  7. Sonraki adımlar

    • A Tour of Go (go.dev/tour): tarayıcıda interaktif ve ücretsiz tur.
    • Goroutine ve kanallar: Go'nun eşzamanlılık modelini küçük örneklerle öğrenin.
    • Veritabanı: database/sql ile SQLite ya da PostgreSQL bağlayın.

Sık Sorulanlar

Go mu Python mu?

Betik, veri ve yapay zekâ için Python; hızlı, tek dosya çalışan servis ve araçlar için Go.

Go'ya framework gerekir mi?

Gerekmez. Standart kütüphane küçük ve orta ölçekli API'ler için yeterlidir; Gin ya da Echo gibi çatılar isteğe bağlıdır.

Go iş bulmak için değerli mi?

Altyapı, bulut ve backend pozisyonlarında talep görür. Yeni başlıyorsanız önce temel programlama mantığını öğrenin, sonra Go'ya geçin.

Go ile Rust arasında nasıl seçilir?

Hızlı geliştirme ve basitlik için Go, azami performans ve bellek kontrolü için Rust.

Next guides

Comments (0)

No comments yet.

Your email will not be published, it is kept only for moderation. See our privacy policy. Log in and your comment will be saved under your name.

Comments are moderated before publishing.