Minimal API'nin Temel Özellikleri
Asp Net Core 8, minimalist bir yaklaşımla geliştirilen Minimal API özelliğiyle geliştiricilere daha basit ve sade bir şekilde uygulama geliştirme imkanı sunmaktadır. Geleneksel Asp Net Core uygulamalarından farklı olarak Minimal API, sadece uygulama çalıştırıldığında bir Startup sınıfı oluşturma zorunluluğunu ortadan kaldırır ve API kodunu minimize eder. Minimal API, sadece Startup.cs dosyasına ihtiyaç duymaz. Bu sayede kod tabanı daha az hale gelir ve daha az yüksek seviye soyutlama kullanılır. Bu minimalist yaklaşım, uygulamanın performansını artırır ve ölçeklenebilirliği iyileştirir.
İstemci-Server İletişimi Nasıl Gerçekleşir?
Minimal API, istemci-server iletişimini gerçekleştirmek için HTTP protokolünü kullanır. Bu protokol, istemcinin sunucuya istek göndermesini ve sunucunun istemciye yanıt vermesini sağlar. İstemci, HTTP istekleriyle belirli bir kaynağa erişmek ister ve sunucu da bu isteklere yanıt verir. Bu sayede istemci ve sunucu arasında bir iletişim kanalı oluşur. Minimal API, HTTP isteklerini ve yanıtlarını yönetmek için sistem tarafından sağlanan HttpRequest ve HttpResponse nesnelerini kullanır. Bu nesneler, gelen istekleri analiz etmek, isteğe uygun bir şekilde yanıtlamak ve sonuçları istemciye döndürmek için kullanılır.
HTTP Metodları ve Endpoint Tanımlamaları
Minimal API, HTTP protokolünün sunduğu farklı metotları kullanarak istemciyle iletişim sağlar. Get, post, put, delete gibi metotlar, farklı işlemleri gerçekleştirmek için kullanılır. Örneğin, Get metodu belirli bir kaynağın bilgilerini almak için kullanılırken, Post metodu yeni bir kaynak oluşturmak için kullanılabilir. Endpoint tanımlamaları ise API'nin hangi metot ve adresle istekleri dinleyeceğini belirler. Örneğin, "/api/products" adresine Get metoduyla yapılan bir istek, API tarafından belirtilen endpointe yönlendirilir ve ilgili işlemler gerçekleştirilir.
Route ve Controller Kavramları
Route kavramı, bir isteğin hangi endpointe yönlendirileceğini belirler. Minimal API'de bu yönlendirmeler genellikle endpoint tanımlamalarıyla yapılmaktadır. Controller kavramı ise API'nin metotlarını gruplamak ve organize etmek için kullanılır. Bir controller, belirli bir kaynak veya işlevi temsil eden metotları içerir. Minimal API'de ise bu kavramın kullanımı daha minimalist bir şekilde gerçekleştirilir.
Request ve Response Objeleri
Minimal API, HTTP protokolünün sağladığı request ve response nesnelerini kullanarak istemciyle iletişim sağlar. Request nesnesi, istemciden gelen isteği analiz etmek ve içerisindeki verilere erişmek için kullanılır. Response nesnesi ise isteğe uygun bir şekilde yanıt vermek ve sonuçları istemciye döndürmek için kullanılır.
Authentication ve Authorization İşlemleri
Minimal API, kullanıcı kimlik doğrulama ve yetkilendirme işlemlerini gerçekleştirmek için Authentication ve Authorization özelliklerini kullanır. Kullanıcı kimlik doğrulama işlemi, kullanıcının kimlik bilgilerinin doğrulanması ve doğrulanması için gereken işlemleri içerir. Yetkilendirme işlemi ise kullanıcının belirli bir kaynağa erişim yetkisini belirler. Bu özellikler, Minimal API ile geleneksel Asp Net Core uygulamalarında olduğu gibi kullanılabilir ve uygulamalara ek güvenlik katmak için kullanılabilir.
Veritabanı Bağlantısı ve Entity Framework
Minimal API, veritabanı bağlantısı ve veritabanı işlemleri için Entity Framework gibi ORM (Object-Relational Mapping) çözümlerini kullanır. Bu sayede minimal API ile veritabanı tabloları arasında etkileşim sağlanabilir ve veriler veritabanına kaydedilebilir veya veritabanından çekilebilir. Veritabanı bağlantısı, uygulamanın appsettings.json veya appsettings.Development.json gibi yapılandırma dosyalarında belirtilen bağlantı bilgileriyle gerçekleştirilir. Entity Framework ise bu bağlantı bilgilerini kullanarak veritabanına erişir ve işlemleri gerçekleştirir.
Dependency Injection ve Middleware Kullanımı
Minimal API, bağımlılık enjeksiyonunu (dependency injection) ve middleware kullanımını destekler. Bağımlılık enjeksiyonu, uygulamanın farklı bileşenlerine ihtiyaç duyan nesnelerin otomatik olarak oluşturulması ve yönetilmesini sağlar. Middleware ise istemciden gelen istekleri işler ve uygun yönlendirmeleri yapar. Bu özellikler sayesinde uygulamalar daha esnek hale gelir ve farklı bileşenlerin birbirleriyle etkileşimini kolaylaştırır. Dependency injection ve middleware kullanımıyla kod tekrarının önüne geçilir ve uygulamalar daha kolay yönetilebilir hale gelir.
Logging ve Hata Yakalama
Minimal API, hata yakalama ve hata raporlama işlemleri için sistem tarafından sağlanan logging özelliğini kullanır. Loglama işlemi, uygulamanın çalışması sırasında ortaya çıkan hataları kaydetmek ve raporlamak için kullanılır. Bu sayede hatalar daha kolay bir şekilde tespit edilebilir ve düzeltilmesi için gerekli önlem alınabilir. Minimal API, hataların nerede ve nasıl oluştuğunu loglar ve uygulamanın çalışması sırasında bir döküm oluşturur. Bu döküm, geliştiricilere hataları daha kolay bir şekilde tespit etme imkanı sunar ve hata çözme sürecini hızlandırır.
UnitTest ve Integration Test Uygulamaları
Minimal API, birimin testi (unit test) ve bütünleme testi (integration test) uygulamalarını destekler. Unit test, uygulamanın küçük birimlerini (sınıf, fonksiyon, metot) ayrı ayrı test etmek için kullanılır. Bu testler, uygulamanın küçük parçalarının doğru çalıştığından emin olmak için kullanılır. Integration test ise birimler arasındaki etkileşimi test etmek amacıyla kullanılır. Bu testler, birimlerin bir arada doğru şekilde çalıştığından emin olmak için kullanılır. Minimal API, bu test uygulamalarını destekler ve geliştiricilere daha güvenilir ve hata yapma olasılığı daha düşük bir yazılım geliştirme süreci sunar. Bu sayede uygulamanın çalıştığı farklı senaryoları test etmek ve hataları önlemek daha kolay hale gelir.
Hadi gelin minimal bir örnek yaparak öğrenmenizi destekleyelim =)
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Merhaba, Dünya!");
app.Run();
Bu örnek, bir `Microsoft.Extensions.Hosting.Host` nesnesi oluşturarak başlar. Daha sonra, `WebApplication.CreateBuilder` yöntemi kullanılarak bir uygulama yapılandırıcı nesnesi oluşturulur. Bu yapılandırıcıyı kullanarak, `MapGet` yöntemi ile `/` rotası belirlenir ve bu rotaya gelen GET istekleri için bir işlev atanır. Bu örnekte, `/` rotası için bir anonim Lambda işlevi kullanılarak "Merhaba, Dünya!" metni döndürülür. Son olarak, uygulama çalıştırılır ve beklemeye geçer. Tarayıcıda `http://localhost:5000` adresine giderek, "Merhaba, Dünya!" metnini görebilirsiniz. Bu örnek, ASP.NET Core 8'de Minimal API kullanımını temsil etmektedir. Daha karmaşık senaryolarda, yönlendirme, model bağlama ve dependency injection gibi özellikleri kullanarak API'yi geliştirebilirsiniz.