ASP.NET Core ile Sıfırdan Web API Geliştirme
ASP.NET Core, Microsoft tarafından geliştirilen ve açık kaynak kodlu bir web uygulama çerçevesidir. Hem performans hem de esneklik açısından güçlü bir yapı sunar. Bu makalede, ASP.NET Core kullanarak sıfırdan bir Web API geliştirme sürecini ele alacağız. Web API’ler, uygulamalar arasında veri alışverişini sağlamak için RESTful servisler sunar ve günümüzün modern yazılım geliştirme dünyasında kritik bir rol oynar.
ASP.NET Core Web API’ye Giriş
ASP.NET Core, platformlar arası (cross-platform) bir çerçeve olduğu için Windows, macOS ve Linux üzerinde çalışabilir. Bu özellik, geliştiricilere geniş bir esneklik sağlar. Web API geliştirme sürecine başlamadan önce, ASP.NET Core’un temellerine ve Web API’nin nasıl çalıştığına dair kısa bir giriş yapalım.
ASP.NET Core’un Temel Yapısı
ASP.NET Core, modüler bir yapıya sahiptir ve bu sayede sadece ihtiyacınız olan bileşenleri kullanarak hafif ve performanslı uygulamalar geliştirebilirsiniz. Başlıca bileşenleri şunlardır:
– Middleware: HTTP isteklerini işlemek için kullanılan ara yazılımlar.
– Dependency Injection (DI): Bağımlılıkları yönetmek için kullanılan bir tasarım deseni.
– Configuration: Uygulama ayarlarını yönetmek için esnek bir yapı.
– Logging: Uygulama aktivitelerini izlemek için çeşitli logging mekanizmaları.
Web API Nedir?
Web API, HTTP protokolü üzerinden veri alışverişi yapmanızı sağlayan bir servis türüdür. Genellikle JSON formatında veri döner ve RESTful prensiplerine uygun olarak tasarlanır. Bu API’ler, istemci tarafında (örneğin, web tarayıcıları, mobil uygulamalar) veya sunucu tarafında kullanılabilir.
ASP.NET Core Web API Projesi Oluşturma
Bir ASP.NET Core Web API projesi oluşturmak için Visual Studio veya .NET CLI kullanabilirsiniz. Aşağıda, .NET CLI kullanarak bir Web API projesi oluşturma adımlarını inceleyeceğiz.
Proje Oluşturma
İlk olarak, .NET CLI kullanarak yeni bir Web API projesi oluşturun:
dotnet new webapi -n MyWebAPI
Bu komut, “MyWebAPI” adında yeni bir Web API projesi oluşturur. Proje yapısı, temel bir Web API uygulaması için gerekli dosyaları içerir.
Proje Yapısı
Oluşturulan projenin yapısı şu şekildedir:
– Controllers: API denetleyicilerini içeren klasör.
– Program.cs: Uygulamanın başlangıç noktasını belirten dosya.
– Startup.cs: Uygulamanın yapılandırma ve middleware ayarlarını içeren dosya.
– appsettings.json: Uygulama konfigürasyon ayarlarını içeren dosya.
ASP.NET Core Web API’de Denetleyici (Controller) Oluşturma
Denetleyiciler, HTTP isteklerini işlemek ve uygun yanıtları döndürmek için kullanılan sınıflardır. Web API geliştirme sürecinde, denetleyiciler genellikle ControllerBase sınıfından türetilir.
Örnek Denetleyici Oluşturma
Aşağıda, basit bir ürün denetleyicisi oluşturma adımlarını göreceksiniz:
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace MyWebAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
private static List products = new List
{
"Product1",
"Product2",
"Product3"
};
[HttpGet]
public ActionResult> Get()
{
return products;
}
[HttpGet("{id}")]
public ActionResult Get(int id)
{
if (id < 0 || id >= products.Count)
return NotFound();
return products[id];
}
[HttpPost]
public void Post([FromBody] string product)
{
products.Add(product);
}
[HttpPut("{id}")]
public IActionResult Put(int id, [FromBody] string product)
{
if (id < 0 || id >= products.Count)
return BadRequest();
products[id] = product;
return NoContent();
}
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
if (id < 0 || id >= products.Count)
return BadRequest();
products.RemoveAt(id);
return NoContent();
}
}
}
Bu denetleyici, basit CRUD (Create, Read, Update, Delete) işlemlerini gerçekleştirebilir. HttpGet, HttpPost, HttpPut ve HttpDelete öznitelikleri, HTTP isteklerini belirli yöntemlerle eşleştirir.
Veri Modeli ve Veri Erişim Katmanı
Web API projelerinde, genellikle bir veri modeli ve veri erişim katmanı oluşturmak gereklidir. Bu katmanlar, veritabanı işlemlerini yönetir ve API’nin iş mantığını soyutlar.
Veri Modeli Oluşturma
Örnek bir ürün modeli oluşturalım:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
Bu model, bir ürünün temel özelliklerini temsil eder.
Veri Erişim Katmanı
Veri erişim katmanı, veritabanı işlemlerini soyutlayan bir sınıftır. Entity Framework Core gibi bir ORM (Object-Relational Mapping) aracı kullanarak veritabanı işlemlerini yönetebilirsiniz.
using Microsoft.EntityFrameworkCore;
public class ApplicationDbContext : DbContext
{
public DbSet Products { get; set; }
public ApplicationDbContext(DbContextOptions options)
: base(options)
{
}
}
ApplicationDbContext, veritabanı bağlamını temsil eder ve Products DbSet’i, ürün tablosunu temsil eder.
ASP.NET Core Web API Güvenliği
Web API’lerin güvenliği, yetkisiz erişimleri önlemek için kritik bir konudur. ASP.NET Core, çeşitli güvenlik mekanizmaları sunar.
JWT (JSON Web Token) ile Kimlik Doğrulama
JWT, kullanıcı kimlik doğrulaması için yaygın olarak kullanılan bir yöntemdir. ASP.NET Core, JWT kimlik doğrulamasını kolayca entegre etmenizi sağlar.
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;
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"))
};
});
services.AddControllers();
}
Bu yapılandırma, JWT tokenlarını doğrulamak için gerekli ayarları içerir.
Performans ve Ölçeklenebilirlik
ASP.NET Core Web API’lerin performansını optimize etmek ve ölçeklenebilirliğini artırmak için çeşitli stratejiler uygulayabilirsiniz.
Caching (Önbellekleme)
Önbellekleme, sık kullanılan verilerin bellekte saklanarak hızlı erişim sağlanmasıdır. ASP.NET Core, bellek içi önbellekleme mekanizmaları sunar.
using Microsoft.Extensions.Caching.Memory;
public class ProductsController : ControllerBase
{
private readonly IMemoryCache _cache;
public ProductsController(IMemoryCache cache)
{
_cache = cache;
}
[HttpGet]
public ActionResult> Get()
{
if (!_cache.TryGetValue("products", out List products))
{
// Veri tabanından veri çek
products = new List { "Product1", "Product2", "Product3" };
var cacheEntryOptions = new MemoryCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromMinutes(5));
_cache.Set("products", products, cacheEntryOptions);
}
return products;
}
}
Bu örnek, ürün listesini bellekte önbellekler ve 5 dakika boyunca saklar.
Sunucu Barındırma Çözümleri
Performansı artırmak ve yüksek erişilebilirlik sağlamak için uygun bir sunucu barındırma çözümü seçmek önemlidir. Örneğin, Cloud Sunucular veya Dedicated Sunucu seçenekleri, yüksek performans ve esneklik sunar.
Sonuç
ASP.NET Core ile Web API geliştirmek, modern uygulamalar için güçlü ve esnek bir çözüm sunar. Bu makalede, sıfırdan bir Web API oluşturma sürecini, denetleyici yapılandırmalarını, veri modeli ve erişim katmanlarını, güvenlik önlemlerini ve performans optimizasyonlarını ele aldık. Geliştirdiğiniz API’lerin performansını artırmak için uygun sunucu çözümleri kullanarak, uygulamanızın ölçeklenebilirliğini ve güvenilirliğini artırabilirsiniz.


