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, 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.
- 7 adım
- 3 dk okuma
-
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.
-
Modül oluşturun
mkdir sunucu cd sunucu go mod init ornek/sunucugo.moddosyası projenizin adını ve bağımlılıklarını tutar. -
En küçük web sunucusu
main.godosyası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:8080adresini açın. Sunucunuz çalışıyor. Durdurmak için terminalde Ctrl+C basın. -
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/Ayseadresi "Selam Ayse" döner. Eskiden bunun için üçüncü parti yönlendirici gerekirdi. -
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. Sonracurl localhost:8080/gorevlerkomutu JSON listesini döner. Yapı alanlarının yanındaki`json:"..."`etiketleri JSON anahtar adlarını belirler. -
Tek dosyaya derleyin
go build -o sunucu . ./sunucuOrtaya çı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 buildyeterlidir. -
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/sqlile 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.
Sıradaki rehberler
Adım adım rehber
SQL Nasıl Öğrenilir? SELECT, WHERE, JOIN ve GROUP BY (Uygulamalı SQLite Rehberi)
SQL'i kurulum derdi olmadan SQLite ile öğrenin: tablo oluşturma, veri ekleme, SELECT, WHERE, JOIN ve GROUP BY örnekleri. Rehberi oku →
Adım adım rehber
TypeScript Nedir? JavaScript'ten Farkı, Kurulum ve İlk Proje
TypeScript'in JavaScript'ten farkı, neden web projelerinde standart olduğu, kurulumu ve ilk tip tanımları. Adım adım baş... Rehberi oku →
Adım adım rehber
Git ve GitHub Nasıl Kullanılır? İlk Commit, Branch ve Pull Request Rehberi
Git'i kurup ilk commit'i atmak, dal (branch) açmak, GitHub'a göndermek ve pull request oluşturmak için sıfırdan başlangı... Rehberi oku →
Yorumlar (0)
Bu içeriğe henüz yorum yapılmamış.
Yorumlar yayınlanmadan önce moderasyondan geçer.