🔧

Golang ile Proje Geliştirme ve REST API Yapısı

Jul 16, 2024

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.