Golang ile Proje Geliştirme ve REST API Yapısı
Temel Konular
Introduction
fmt paketi ve Hello World! örneği
- Go dilinin genel yapısı ve çalışma prensipleri
Kurulum ve Ortam Ayarları
Go Ortamını Kurma
Golang web sitesinden Go dili indirme ve kurulum
VSCode veya GoLand IDE ile çalışma ortamı oluşturma
Docker ve PostgreSQL Kurulumu
- Docker Desktop kurulumu
- Postgres image ile Docker konteyner oluşturma ve veri tabanı ayaklandırma
Go Modülü ve Paketler
- Yeni Go projesi oluşturma ve paket yapılarına giriş
mod dosyası ve bağımlılık yönetimi
Proje Yapısı Kurulumu
Katmanlı Mimari
common, controller, domain, repository, service klasör yapılandırması
Bağlantı Yapılandırmaları
- config.go: PostgreSQL bağlantı ayarları (
config yapısı)
- main.go: Ana giriş ve web server başlatma
- GetConnectionPool ve diğer fonksiyonlar
echo framework ile web server oluşturma
- Configuration Manager ile yapılandırmaları okuma ve oluşturma
Domain ve Repository Katmanı
Domain Modeli
- product.go: Product yapısı ve alanları
Repository Katmanı
- product_repository.go
GetAllProducts, GetProductsByStore, GetByID, DeleteByID, UpdatePrice, AddProduct fonksiyonları
- Database işlemleri (
query, exec, Scan, Next gibi)
Servis Katmanı
İş Kuralları ve Servisler
- product_service.go
AddProduct, DeleteByID, GetByID, UpdatePrice, GetAllProducts, GetProductsByStore fonksiyonları
- Validasyon kuralı (
validateProductCreate örneği)
- Servis katmanında Pseudo-kodlar ile iş kuralları
Fake Repository Kullanımı
- Unit testleri için sahte (fake) repository oluşturma
- fake_product_repository.go
- Servis fonksiyonlarını unit test ile test etme
Kontrol Katmanı ve REST API
Kontrol Katmanı Fonksiyonları
- product_controller.go
registerRoutes: Tüm route'ları kaydetme
- Handler fonksiyonlar (
GetAllProducts, AddProduct, GetByID, DeleteByID, UpdatePrice)
Request ve Response Yapıları
- request.go:
AddProductRequest örneği
- response.go:
ProductResponse, ErrorResponse örnekleri
- Gelen verileri
Bind ile haritalama
- Dönüş verilerini
json formatında döndürme
Test Yazımı
Integration ve Unit Testler
- Gerçek veri tabanıyla integrasyon testleri yazma
- Sahte repository ile unit testler yazma
- Test frameworkleri (
testing, testify kullanımı)
Diğer Testler
- Setup ve Teardown işlemleri (
setup ve clear fonksiyonları)
- Mock veri ekleme ve temizleme
Proje Analizi ve Sonuçlar
Detaylı Özellikler ve İşlevler
- İş kuralları ve validasyonlar
- Detaylı DTO ve dönüşüm işlemleri
- Güncelleme ve silme işlemleri
- Query parametreleri ile çalışmalar
Bu projeyle birlikte golang dilinin temel prensipleri, proje yapılandırmaları ve katmanlı mimariyi uygulamalı olarak öğrendik. Rest API kullanımını ve golang ile test yazımı gibi önemli konuları ele aldık. Bu bilgilerle birlikte golang kullanarak daha karmaşık ve geniş projeler geliştirebilirsiniz.