CodeBlanks Logo Icon CodeBlanks

Servis iskeleti

  • Go kursu
  • İleri seviye
  • Ders 43/68
  • 6 dk

Mikroservis iskeletini ve katmanları tasarlarsın.

Proje: ürün servisi

Bu projede ürünleri listeleyen ve ekleyen küçük bir mikroservis kuracaksın. Kod üç katmana ayrılır:

  • handler: HTTP isteğini okur, JSON yanıt yazar.
  • service: iş kurallarını uygular (ör. fiyat negatif olamaz).
  • repository: veriyi saklar (veritabanı ya da bellek).

Her katman bir alttakini arayüz üzerinden kullanır; böylece test ederken gerçek veritabanı gerekmez.

Klasör düzeni

Yaygın bir düzen:

urun-servisi/
  cmd/server/main.go     // bağlantıları kurar, sunucuyu başlatır
  internal/urun/model.go // Urun türü
  internal/urun/repo.go  // Repository arayüzü ve uygulaması
  internal/urun/service.go
  internal/urun/handler.go
  go.mod

internal/ altındaki paketler modül dışından içe aktarılamaz; servis içi kodu dışarıya kapatır.

Uygulama Model ve arayüz

type Urun struct { ID int; Ad string; Fiyat float64 } ve type Repo interface { Ekle(u Urun) error; Liste() []Urun } tanımla. main içinde Urun{1, "Kalem", 12.5} değerini %+v ile yazdır.

Başlangıç kodu

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
package main

import "fmt"

type Urun struct {
    ID    int
    Ad    string
    Fiyat float64
}

type Repo interface {
    Ekle(u Urun) error
    Liste() []Urun
}

func main() {
    fmt.Printf("%+v\n", Urun{1, "Kalem", 12.5})
}

Beklenen çıktı

{ID:1 Ad:Kalem Fiyat:12.5}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 "Fiyat negatif olamaz" kuralı hangi katmana aittir?

  • repository
  • main
  • service Doğru cevap
  • handler

Açıklama: İş kuralları service katmanında durur; handler yalnızca HTTP'yi, repository yalnızca saklamayı bilir.

2 Gizli paketler

Soru
urun-servisi/
  ____/urun/service.go
Cevap
urun-servisi/
  internal/urun/service.go

Açıklama: internal klasörü, içindeki paketlerin yalnızca aynı modülden içe aktarılmasına izin verir.

3 Katman ve görevi

Kavram Anlamı
handler HTTP ve JSON
service İş kuralları
repository Veri saklama
cmd/server Bağlantıları kurar

İleri seviye bölümündeki tüm dersler