Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
ASP.NET Core Web API'de Unit Test: xUnit ve Moq ile Service ve Controller Testleri
xUnit ve Moq ile ASP.NET Core Web API'de unit test: net6.0 için doğru paket sürümleri, AAA ve isimlendirme, Setup ve Verify, ActionResult<T> testlerindeki Result/Value farkı, Theory ve NSubstitute karşılaştırması.
ASP.NET Core Web API'de Health Check: Liveness, Readiness ve Veritabanı Kontrolü
ASP.NET Core Web API'de health check: AddDbContextCheck ile veritabanı kontrolü, IHealthCheck ile Redis kontrolü, liveness ve readiness ayrımı, Degraded'ın neden 200 döndüğü, JSON çıktısı ve timeout tuzakları.
ASP.NET Core Web API'de Caching: IMemoryCache, Redis ve Response Caching
ASP.NET Core Web API'de caching: IMemoryCache ile absolute ve sliding expiration, yazınca silerek invalidation, Redis ile IDistributedCache ve response caching middleware'inin hangi isteği neden cache'lemediği.
ASP.NET Core Web API'de Swagger ve OpenAPI: Swashbuckle ile Dokümantasyon
Swashbuckle ile ASP.NET Core Web API'ye OpenAPI belgesi ve Swagger UI ekliyoruz: doğru paket sürümü, XML comments, response tiplerini belgelemek, JWT için Authorize butonu ve gerçek hata mesajlarıyla sık düşülen tuzaklar.
ASP.NET Core Web API Versioning: Asp.Versioning ile URL, Query String ve Header
Breaking change'leri eski istemcileri kırmadan yayınlamak için Asp.Versioning.Mvc ile iki sürümlü bir API kuruyoruz. URL, query string ve header okuyucularını, deprecation ve Sunset header'larını deniyoruz.
ASP.NET Core Web API'de CORS ve Güvenlik: HTTPS, HSTS, Header'lar ve Secret'lar
CORS'un neden güvenlik duvarı olmadığını curl ile görüyor, policy tanımlayıp preflight isteğini okuyoruz. HTTPS redirection, HSTS'in localhost istisnası, güvenlik header'ları ve user secrets da var.
ASP.NET Core Web API'de Authorization: Roller, Policy'ler ve Resource-Based Yetkilendirme
[Authorize] ve FallbackPolicy ile başlayıp rollere, policy'lere, kendi requirement ve handler'ımıza ve resource-based authorization'a geçiyoruz. RoleClaimType tuzağını ve 401 ile 403 farkını curl ile görüyoruz.
ASP.NET Core Web API'de JWT ile Authentication: Token Üretmek ve Doğrulamak
Authentication ile authorization farkından JWT'nin anatomisine, AddJwtBearer kurulumundan JsonWebTokenHandler ile token üretmeye kadar login akışını kuruyoruz. ClockSkew, claim mapping ve refresh token fikri de var.
ASP.NET Core Web API'de Dosya Yükleme ve İndirme: IFormFile, Limitler ve Streaming
IFormFile ile ürün görseli yüklüyor, path traversal ve sahte uzantıya karşı dosyayı koruyoruz. Kestrel ve form limitlerini, PhysicalFile ile indirmeyi ve MultipartReader ile streaming'i görüyoruz.
ASP.NET Core Web API'de Pagination, Filtering ve Sorting: Büyük Listeleri Güvenle Döndürmek
Query parametrelerini tek class'ta topluyor, IQueryable ile filtre, toplam sayı, Skip/Take ve beyaz listeli dinamik sıralamayı veritabanında çalıştırıyoruz. Metadata body mi header mı, offset mi keyset mi, SQLite decimal tuzağı.
ASP.NET Core Web API'de Filter'lar: Action Filter, Result Filter ve ServiceFilter
MVC'nin filter pipeline'ını gerçek loglarla söküyoruz: global, controller ve action filter'ların sırası, DI kullanan async filter için ServiceFilter, TypeFilter ile kısa devre, result filter ve middleware ile filter arasındaki seçim.
ASP.NET Core'da Global Hata Yönetimi: Exception Middleware ve ProblemDetails
.NET 6'da yakalanmayan exception'ın gerçek yanıtından başlayıp UseExceptionHandler ve error controller'a, oradan domain exception'larını 404/409/500 ProblemDetails yanıtlarına çeviren kendi middleware'imize geçiyoruz.