Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
.NET 9 ile Web API'ye giriş: REST prensipleri ve neden .NET?
NET 9 Web API serisinin ilk yazısı. REST prensiplerini, kaynak odaklı düşünmeyi, HTTP metotlarını ve neden .NET 9 seçtiğimizi sade, örneklerle dolu bir dille anlatıyoruz.
İlk projeyi kurma: proje yapısı, Program.cs ve minimal hosting modeli
İlk .NET 9 Web API projemizi kuruyoruz. Program.cs dosyasını satır satır açıyor, minimal hosting modelini, builder ile app ayrımını ve middleware sırasının neden önemli olduğunu anlıyoruz.
Controller mı, Minimal API mı? Hangisini ne zaman seçmeli?
İki farklı endpoint yazma yaklaşımını karşılaştırıyoruz: controller tabanlı yapı ve Minimal API. Hangisi ne zaman mantıklı, ikisi arasındaki fark neye dayanıyor, örneklerle netleştiriyoruz.
İlk controller'ı yazmak: routing, attribute'lar ve action metotları
İlk gerçek controller'ımızı yazıyoruz. Routing nasıl çalışır, attribute'lar ne işe yarar, action metotları nasıl kurgulanır ve gelen bir istek doğru metoda nasıl ulaşır, adım adım işliyoruz.
HTTP durum kodları ve doğru cevap dönmek: IActionResult ve Results
HTTP durum kodlarını ve doğru cevabı dönmenin yollarını işliyoruz. Hangi durumda hangi kod, IActionResult ile Results arasındaki fark ve API'ni kullananların işini kolaylaştıran küçük detaylar.
Model binding: Gelen isteğin verisini metoda bağlamak (route, query, body, header)
Gelen bir isteğin içindeki veriyi .NET'in metot parametrelerine nasıl otomatik bağladığını işliyoruz: route, query string, gövde ve header'dan veri okumak, [FromBody] gibi attribute'lar ve sık hatalar.
DTO nedir ve neden entity'yi doğrudan dönmemeliyiz?
DTO'ların ne olduğunu ve neden veritabanı nesnelerini doğrudan dönmemeniz gerektiğini işliyoruz: güvenlik, gizlilik, esneklik ve sözleşme kararlılığı açısından DTO kullanmanın somut faydaları.
Model validation: Gelen veriyi Data Annotations ve FluentValidation ile doğrulamak
Gelen veriyi doğrulamayı işliyoruz: Data Annotations ile hızlı kural tanımlama, [ApiController]'ın otomatik doğrulaması ve karmaşık kurallar için FluentValidation. Neyi ne zaman seçmeli?
Entity Framework Core'a giriş: DbContext ve ilk migration
Verimizi gerçek bir veritabanında saklamaya başlıyoruz. EF Core nedir, DbContext neyi temsil eder, DbSet ile tablolar nasıl tanımlanır ve ilk migration ile veritabanı nasıl oluşturulur, adım adım.
Repository pattern gerçekten gerekli mi? Servis katmanını konuşalım
Controller'dan doğrudan DbContext kullanmak yerine araya katman koymayı konuşuyoruz. Servis katmanı ne işe yarar, repository pattern gerçekten gerekli mi, ne zaman değer, ne zaman fazladan yük?
DTO-entity dönüşümü: Elle yazmak mı, AutoMapper mı?
Entity ile DTO arasındaki dönüşümü konuşuyoruz. Elle mapping'in artıları, AutoMapper'ın ne zaman kolaylık ne zaman gizli maliyet olduğu ve projende hangisini seçmen gerektiğine dair pratik bir bakış.
Dependency injection derinlemesine: Singleton, Scoped ve Transient lifetime'lar
Dependency injection'ın kalbindeki lifetime kavramını işliyoruz. Singleton, scoped ve transient arasındaki fark, hangisinin ne zaman kullanılacağı ve yanlış seçimin yol açtığı sinsi hatalar.