ASP Genel VMware

ASP.NET Core ile Sıfırdan API Geliştirme Rehberi

ASP.NET Core ile Sıfırdan API Geliştirme Rehberi

ASP.NET Core ile Sıfırdan API Geliştirme Rehberi

ASP.NET Core, Microsoft tarafından geliştirilen, açık kaynak kodlu ve platformlar arası çalışabilen bir web uygulama çerçevesidir. ASP.NET Core, özellikle API geliştirme konusunda esneklik ve performans sunar. Bu rehberde, ASP.NET Core kullanarak sıfırdan bir API geliştirme sürecini detaylandıracağız.

1. ASP.NET Core Projesi Oluşturma

ASP.NET Core ile API geliştirmeye başlamak için ilk adım, bir proje oluşturmaktır. Visual Studio veya .NET CLI kullanarak hızlıca bir ASP.NET Core Web API projesi oluşturabilirsiniz.

Visual Studio Kullanarak Proje Oluşturma

1. Visual Studio’yu Başlatın: “Yeni Proje Oluştur” seçeneğine tıklayın.

  1. Proje Türü Seçimi: “ASP.NET Core Web API” şablonunu seçin.
3. Proje Ayarları: Projenize bir isim verin ve konumunu belirleyin.
  1. Hedef Çerçeve Seçimi: .NET 6 veya daha yeni bir sürüm seçin.

.NET CLI Kullanarak Proje Oluşturma

dotnet new webapi -n MyApiProject

Bu komut, “MyApiProject” adında yeni bir ASP.NET Core Web API projesi oluşturur.

2. Temel API Yapılandırması

Projenizi oluşturduktan sonra, Startup.cs veya .NET 6 ile birlikte Program.cs dosyasında temel yapılandırmayı yapmanız gerekecek.

Servisleri Yapılandırma

ASP.NET Core, bağımlılık enjeksiyonu (Dependency Injection) ile gelir. ConfigureServices metodunda gerekli servisleri ekleyebilirsiniz.

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddEndpointsApiExplorer();
    services.AddSwaggerGen();
}

Yukarıdaki kod, API için gerekli olan temel servisleri ekler ve Swagger desteği sağlar.

Middleware Yapılandırması

Configure metodunda, isteklerin nasıl işleneceğini belirleyen middleware’leri tanımlayabilirsiniz.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyApiProject v1"));
    }

    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

Bu yapılandırma, geliştirici hata sayfasını, HTTPS yönlendirmeyi ve Swagger UI’yi etkinleştirir.

3. Controller ve Action Metotları

API’nizin çekirdeği, controller’lar ve action metotlarıdır. Controller’lar, API isteklerini işler ve yanıtlar üretir.

Basit Bir Controller Oluşturma

[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet]
    public IActionResult GetProducts()
    {
        var products = new List { "Product1", "Product2", "Product3" };
        return Ok(products);
    }
}

Bu örnek, “api/products” endpoint’ine GET isteği yapıldığında bir ürün listesi dönen basit bir controller tanımlar.

4. Veri Erişimi ve Entity Framework Core

ASP.NET Core projelerinde veri erişimi için genellikle Entity Framework Core kullanılır. Bu kısımda, EF Core ile veritabanı işlemlerini nasıl gerçekleştireceğinizi inceleyeceğiz.

Entity Framework Core Kurulumu

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer

Bu komutlar, EF Core ve SQL Server sağlayıcısını projenize ekler.

DbContext ve Model Tanımlama

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}

public class AppDbContext : DbContext
{
    public DbSet Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("YourConnectionStringHere");
    }
}

Product sınıfı, veritabanında saklanacak veri modelini temsil ederken, AppDbContext sınıfı veritabanı bağlamını tanımlar.

Veritabanı İşlemleri

Controller’da, EF Core kullanarak veritabanı işlemlerini gerçekleştirebilirsiniz.

[HttpPost]
public IActionResult CreateProduct(Product product)
{
    _context.Products.Add(product);
    _context.SaveChanges();
    return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product);
}

Bu metot, yeni bir ürün oluşturur ve veritabanına kaydeder.

5. API Güvenliği ve Kimlik Doğrulama

API’lerinizi güvenli hale getirmek için kimlik doğrulama ve yetkilendirme mekanizmalarını uygulamanız önemlidir.

JWT ile Kimlik Doğrulama

JWT (JSON Web Token), API güvenliği için yaygın olarak kullanılan bir kimlik doğrulama yöntemidir.

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

Bu yapılandırma, JWT token doğrulaması için gerekli ayarları içerir.

Yetkilendirme

API endpoint’lerinizi belirli kullanıcı gruplarına açmak için yetkilendirme kuralları tanımlayabilirsiniz.

[Authorize]
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
    var product = _context.Products.Find(id);
    if (product == null)
    {
        return NotFound();
    }
    return Ok(product);
}

Bu örnekte, GetProduct metodu yalnızca kimliği doğrulanmış kullanıcılar tarafından erişilebilir.

6. Performans Optimizasyonu

API performansını artırmak için çeşitli optimizasyon teknikleri uygulayabilirsiniz.

Caching

Yanıtların önbelleğe alınması, API performansını artırabilir.

[HttpGet]
[ResponseCache(Duration = 60)]
public IActionResult GetProducts()
{
    var products = _context.Products.ToList();
    return Ok(products);
}

Bu örnek, ürün listesini 60 saniye boyunca önbelleğe alır.

Asenkron Programlama

Asenkron programlama, API’nizin daha fazla isteği eşzamanlı olarak işlemesine olanak tanır.

[HttpGet]
public async Task GetProductsAsync()
{
    var products = await _context.Products.ToListAsync();
    return Ok(products);
}

Bu metot, ürün listesini asenkron olarak getirir.

7. Dağıtım ve Barındırma

ASP.NET Core API’nizi bir VDS Sunucu veya Cloud Sunucu üzerinde barındırabilirsiniz. Bu sunucular, API’nizin güvenli ve ölçeklenebilir bir şekilde çalışmasını sağlar.

Sunucu Konfigürasyonu

Sunucunuzda gerekli .NET runtime ve diğer bağımlılıkları kurduktan sonra, API’nizi dağıtabilirsiniz. Sunucu yapılandırması, uygulamanızın performansını ve güvenliğini doğrudan etkileyebilir.

CI/CD Entegrasyonu

Sürekli entegrasyon ve sürekli dağıtım (CI/CD) süreçleri, API’nizin güncellemelerini hızlı ve güvenli bir şekilde sunucuya aktarmanızı sağlar. Bu süreçleri GitHub Actions, Azure DevOps gibi araçlarla entegre edebilirsiniz.

ASP.NET Core ile API geliştirme süreci, doğru yapılandırma ve optimizasyon teknikleri ile oldukça verimli ve esnek hale gelir. Bu rehberde, ASP.NET Core kullanarak sıfırdan bir API geliştirmek için gerekli adımları ve teknikleri inceledik. ASP.NET Core’un sağladığı esneklik ve performans avantajları sayesinde, modern ve ölçeklenebilir API’ler geliştirmek mümkündür.