ASP Genel VMware

ASP.NET Core ile Restful API Geliştirme Teknikleri

ASP.NET Core ile Restful API Geliştirme Teknikleri

ASP.NET Core ile Restful API Geliştirme Teknikleri

ASP.NET Core, Microsoft tarafından geliştirilmiş açık kaynaklı, platformlar arası bir çerçevedir ve özellikle Restful API geliştirme için güçlü araçlar sunar. Restful API’ler, web servislerinin HTTP protokolü üzerinden iletişim kurmasını sağlayan bir mimari tarzıdır. Bu yazıda, ASP.NET Core ile Restful API geliştirme sürecinde dikkate alınması gereken teknik detayları ve en iyi uygulamaları ele alacağız.

1. Proje Yapılandırması ve Başlangıç

ASP.NET Core ile Restful API geliştirmeye başlamak için öncelikle bir proje oluşturmanız gerekmektedir. .NET CLI kullanarak yeni bir Web API projesi oluşturabilirsiniz:

dotnet new webapi -n MyRestfulAPI

Bu komut, “MyRestfulAPI” adında yeni bir Web API projesi oluşturur. Proje yapısında, Controllers klasörü altında API denetleyicilerinizi oluşturabilirsiniz. Startup.cs dosyası ise uygulamanızın yapılandırmasını ve servislerini tanımladığınız yerdir.

2. Denetleyiciler ve Eylemler

ASP.NET Core’da, denetleyiciler (controllers) API uç noktalarını tanımlar. Her denetleyici bir sınıftır ve bu sınıflar ControllerBase sınıfından türetilir. Örneğin, bir ProductsController oluşturmak için aşağıdaki gibi bir yapı kullanabilirsiniz:

using Microsoft.AspNetCore.Mvc;

[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public IActionResult GetAllProducts()
    {
        // Ürünleri veri kaynağından al ve döndür
        return Ok(new List { "Product1", "Product2" });
    }
}

Bu örnekte, GetAllProducts eylemi HTTP GET isteği ile çağrılır ve ürünlerin listesini döndürür.

3. Model Bağlama ve Doğrulama

Model bağlama, gelen HTTP isteklerinden verilerin alınarak model nesnelerine dönüştürülmesi işlemidir. ASP.NET Core, model bağlama işlemini otomatik olarak gerçekleştirir. Ayrıca, model doğrulama için DataAnnotations kullanılabilir:

public class Product
{
    [Required]
    public string Name { get; set; }

    [Range(0, 1000)]
    public decimal Price { get; set; }
}

Bu modelde, Name alanının zorunlu olduğu ve Price alanının 0 ile 1000 arasında bir değer alabileceği belirtilmiştir. Denetleyici eylemlerinde model doğrulama hatalarını kontrol edebilirsiniz:

[HttpPost]
public IActionResult CreateProduct([FromBody] Product product)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    // Ürünü veri kaynağına ekle
    return CreatedAtAction(nameof(GetAllProducts), new { id = product.Id }, product);
}

4. İstemci-Server İletişimi ve JSON Formatı

Restful API’ler genellikle JSON formatında veri alışverişi yapar. ASP.NET Core, JSON formatında veri döndürmek için System.Text.Json veya Newtonsoft.Json kütüphanelerini kullanabilir. Startup.cs dosyasında JSON ayarlarını yapılandırabilirsiniz:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers()
            .AddJsonOptions(options =>
            {
                options.JsonSerializerOptions.PropertyNamingPolicy = null;
            });
}

Bu ayar, JSON verilerinde varsayılan olarak kullanılan camelCase yerine orijinal alan adlarının kullanılmasını sağlar.

5. Güvenlik ve Kimlik Doğrulama

Restful API’lerin güvenliğini sağlamak için kimlik doğrulama ve yetkilendirme mekanizmaları kullanılmalıdır. ASP.NET Core, JWT (JSON Web Token) kimlik doğrulama için yerleşik destek sunar. JWT, istemcinin kimliğini doğrulamak için kullanılan bir token formatıdır. Startup.cs dosyasında JWT kimlik doğrulama ayarlarını yapılandırabilirsiniz:

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("YourSecretKey"))
                };
            });

    services.AddControllers();
}

Bu yapılandırma, JWT tokenlarının doğrulanması için gerekli parametreleri belirler. İstemci, sunucuya her istek gönderdiğinde geçerli bir JWT token sağlamalıdır.

6. Performans Optimizasyonu

Restful API’lerin performansını artırmak için çeşitli optimizasyon teknikleri uygulanabilir. Bunlardan biri, yanıtların önbelleğe alınmasıdır. ASP.NET Core, yanıtların önbelleğe alınması için ResponseCache özniteliğini sağlar:

[HttpGet]
[ResponseCache(Duration = 60)]
public IActionResult GetCachedData()
{
    // 60 saniye boyunca önbelleğe alınacak veri
    return Ok("This is cached data.");
}

Bu öznitelik, belirli bir süre boyunca yanıtların önbelleğe alınmasını sağlar ve böylece sunucu yükünü azaltır.

7. Hata Yönetimi ve Günlükleme

API geliştirme sürecinde hata yönetimi ve günlükleme önemlidir. ASP.NET Core, hata yönetimi için ExceptionFilter ve günlükleme için ILogger arayüzünü kullanır. Global hata yönetimi için bir özel hata filtresi oluşturabilirsiniz:

public class GlobalExceptionFilter : IExceptionFilter
{
    public void OnException(ExceptionContext context)
    {
        // Hata günlüğe kaydedilir
        context.Result = new ObjectResult("An error occurred.")
        {
            StatusCode = 500
        };
    }
}

Bu filtre, tüm denetleyicilerde meydana gelen hataları yakalar ve standart bir hata yanıtı döndürür.

8. Yayınlama ve Dağıtım

API’nizi geliştirdikten sonra, uygun bir sunucu ortamına dağıtmanız gerekir. ASP.NET Core uygulamaları, çeşitli barındırma seçenekleriyle uyumludur. Örneğin, VDS Sunucular veya Cloud Sunucular üzerinde API’nizi barındırabilirsiniz. Bu tür sunucular, yüksek performans ve ölçeklenebilirlik sağlar.

9. Gerçek Dünya Senaryoları

Gerçek dünya uygulamalarında, Restful API’ler genellikle karmaşık iş mantıklarını yönetir. Örneğin, bir e-ticaret platformu için ürün yönetimi, sipariş işleme ve kullanıcı hesap yönetimi gibi modüller oluşturabilirsiniz. Bu modüller, API’nin ölçeklenebilirliğini ve esnekliğini artırmak için mikro hizmet mimarisi ile tasarlanabilir.

ASP.NET Core, bu tür senaryolar için güçlü bir temel sunar ve geliştiricilere geniş bir araç seti sağlar. API’lerinizi optimize etmek ve güvenliğini sağlamak için yukarıda belirtilen teknikleri ve en iyi uygulamaları kullanabilirsiniz.

Sonuç olarak, ASP.NET Core ile Restful API geliştirme, modern web uygulamaları için esnek ve güçlü bir çözüm sunar. Doğru yapılandırma ve optimizasyon teknikleri ile yüksek performanslı ve güvenli API’ler oluşturabilirsiniz.