ASP.NET Core ile API Geliştirme Tüyoları ve İpuçları
ASP.NET Core, modern web uygulamaları ve API’ler geliştirmek için güçlü bir platform sunar. Geliştiriciler için esneklik, performans ve ölçeklenebilirlik gibi avantajlar sağlayan bu platform, özellikle API geliştirme süreçlerinde sıkça tercih edilir. Bu makalede, ASP.NET Core ile API geliştirme konusunda önemli tüyolar ve ipuçları sunacağız.
1. ASP.NET Core API Projesi Oluşturma
ASP.NET Core ile API geliştirmeye başlamadan önce, doğru bir proje yapısı oluşturmak önemlidir. Visual Studio veya .NET CLI kullanarak yeni bir ASP.NET Core Web API projesi oluşturabilirsiniz.
Visual Studio Kullanarak Proje Oluşturma
Visual Studio’da yeni bir proje oluştururken, “ASP.NET Core Web API” şablonunu seçerek başlayabilirsiniz. Bu şablon, temel API yapılandırmalarını ve örnek bir WeatherForecast
API’sini içerir.
// Visual Studio'da Yeni Proje Oluşturma2. ASP.NET Core Web API seçin
- File > New > Project
4. .NET Core ve ASP.NET Core 5.0 (veya daha yeni) sürümünü seçin
- Proje adını ve konumunu belirleyin
- Create butonuna tıklayın
Bu adımlar, size hızlı bir başlangıç sağlayarak temel bir API projesi oluşturur.
.NET CLI Kullanarak Proje Oluşturma
.NET CLI kullanarak terminal üzerinden de hızlıca bir API projesi oluşturabilirsiniz:
dotnet new webapi -n MyApiProject
Bu komut, “MyApiProject” adında yeni bir ASP.NET Core Web API projesi oluşturur. CLI ile proje oluşturmak, özellikle sürekli entegrasyon/dağıtım (CI/CD) süreçlerinde otomasyonu kolaylaştırır.
2. RESTful API Tasarımı ve En İyi Uygulamalar
RESTful API tasarımı, API’nizin kullanılabilirliğini ve sürdürülebilirliğini doğrudan etkiler. İşte dikkate almanız gereken bazı en iyi uygulamalar:
Kaynak Tabanlı Tasarım
API tasarımında, kaynakları (resources) belirlemek önemlidir. Her kaynak, benzersiz bir URI ile tanımlanmalıdır ve HTTP yöntemleri (GET, POST, PUT, DELETE) ile etkileşimde bulunulmalıdır.
// Örnek Kaynak URI'leri GET /api/products // Tüm ürünleri getir GET /api/products/{id} // Belirli bir ürünü getir POST /api/products // Yeni bir ürün oluştur PUT /api/products/{id} // Belirli bir ürünü güncelle DELETE /api/products/{id} // Belirli bir ürünü sil
HTTP Durum Kodlarının Kullanımı
API yanıtlarında doğru HTTP durum kodlarını kullanmak, istemci tarafında anlaşılır ve doğru hata yönetimi sağlar.
– 200 OK
: Başarılı GET veya PUT isteği
– 201 Created
: Başarılı POST isteği
– 204 No Content
: Başarılı DELETE isteği
– 400 Bad Request
: Geçersiz istek verisi
– 404 Not Found
: Kaynak bulunamadı
– 500 Internal Server Error
: Sunucu hatası
HATEOAS (Hypermedia as the Engine of Application State)
HATEOAS, istemcilerin API’de gezinmesini kolaylaştırır. Yanıtlar, ilgili bağlantıları (links) içermelidir.
{ "id": 1, "name": "Product A", "price": 100, "links": [ { "rel": "self", "href": "/api/products/1" }, { "rel": "update", "href": "/api/products/1" }, { "rel": "delete", "href": "/api/products/1" } ] }
Bu yapı, istemcilerin API ile nasıl etkileşime geçeceğini daha iyi anlamalarına yardımcı olur.
3. Performans Optimizasyonu
API performansı, kullanıcı deneyimini doğrudan etkiler. ASP.NET Core, performans optimizasyonu için çeşitli araçlar ve teknikler sunar.
Caching (Önbellekleme)
Önbellekleme, sık erişilen verilerin bellekte saklanarak daha hızlı erişilmesini sağlar. ASP.NET Core’da Response Caching Middleware kullanarak yanıtları önbelleğe alabilirsiniz.
public void ConfigureServices(IServiceCollection services) { services.AddResponseCaching(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseResponseCaching(); }
Yanıtları önbelleğe almak için, denetleyici yöntemlerine [ResponseCache]
özniteliği ekleyebilirsiniz.
[HttpGet] [ResponseCache(Duration = 60)] public IActionResult GetProducts() { // Ürünleri getir }
Asenkron Programlama
Asenkron programlama, I/O işlemlerini daha verimli hale getirir. ASP.NET Core, asenkron denetleyici yöntemlerini destekler.
public async TaskGetProductAsync(int id) { var product = await _productService.GetProductByIdAsync(id); return Ok(product); }
Asenkron yöntemler, özellikle veri tabanı veya dış servis çağrılarında performansı artırır.
4. Güvenlik Önlemleri
API güvenliği, verilerinizi ve kullanıcılarınızı korumak için kritik öneme sahiptir. ASP.NET Core, güvenliği artırmak için çeşitli mekanizmalar sunar.
JWT (JSON Web Token) ile Kimlik Doğrulama
JWT, API isteklerini güvenli bir şekilde kimlik doğrulamak için yaygın olarak kullanılır. ASP.NET Core, JWT tabanlı kimlik doğrulama için destek sunar.
public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "yourdomain.com", ValidAudience = "yourdomain.com", IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key")) }; }); }
JWT, istemci ve sunucu arasında güvenli bir iletişim sağlar ve her istekte kimlik doğrulama bilgilerini taşır.
HTTPS Zorunluluğu
API iletişimlerini güvenli hale getirmek için HTTPS kullanmak önemlidir. ASP.NET Core, HTTPS zorunluluğunu kolayca yapılandırmanıza olanak tanır.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseHttpsRedirection(); }
Bu yapılandırma, HTTP isteklerini otomatik olarak HTTPS’e yönlendirir.
5. Hata Yönetimi ve Günlükleme
Hata yönetimi ve günlükleme, API’nizin güvenilirliğini artırır ve sorunların hızlı bir şekilde çözülmesine yardımcı olur.
Global Hata Yönetimi
Global hata yönetimi, tüm hataları merkezi bir yerden ele almanızı sağlar. ASP.NET Core, ExceptionHandlerMiddleware
ile global hata yönetimi sunar.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseExceptionHandler("/error"); } [Route("error")] public IActionResult HandleError() { var context = HttpContext.Features.Get(); var exception = context?.Error; return Problem(detail: exception?.Message, statusCode: 500); }
Bu yapı, tüm hataları /error
yoluna yönlendirir ve standart bir hata yanıtı döndürür.
Günlükleme (Logging)
ASP.NET Core, güçlü bir günlükleme altyapısına sahiptir. Günlükleme, uygulamanızın çalışmasını izlemek ve sorunları tespit etmek için önemlidir.
public void ConfigureServices(IServiceCollection services) { services.AddLogging(builder => { builder.AddConsole(); builder.AddDebug(); }); }
Günlükleme, konsola veya hata ayıklama çıkışına yazılabilir ve farklı günlükleme sağlayıcıları ile genişletilebilir.
Sonuç
ASP.NET Core ile API geliştirmek, modern web uygulamaları oluşturmak için güçlü ve esnek bir çözümdür. Doğru tasarım ve uygulama teknikleri ile API’nizin performansını, güvenliğini ve sürdürülebilirliğini artırabilirsiniz. Bu makalede, ASP.NET Core ile API geliştirme sürecinde dikkate almanız gereken önemli tüyolar ve ipuçlarını ele aldık. Daha fazla bilgi ve uygulama için ASP.NET Core dokümantasyonuna başvurabilirsiniz. Ayrıca, API projelerinizi barındırmak için Cloud Sunucular veya VDS Sunucular gibi seçenekleri değerlendirebilirsiniz.