ASP.NET Core ile API Geliştirme: Temel Rehber
ASP.NET Core, modern web uygulamaları ve API’ler geliştirmek için güçlü ve esnek bir platform sunar. Bu makalede, ASP.NET Core ile API geliştirme sürecine odaklanacağız. API’lerin nasıl yapılandırılacağı, temel bileşenleri ve performans optimizasyonları gibi konuları detaylandıracağız.
ASP.NET Core API Nedir?
ASP.NET Core, Microsoft tarafından geliştirilen açık kaynaklı, platformlar arası bir framework’tür. API’ler, farklı uygulamaların birbiriyle iletişim kurmasına olanak tanır. ASP.NET Core ile geliştirilen API’ler, RESTful prensiplerine uygun, ölçeklenebilir ve performanslı çözümler sunar.
API Projesi Oluşturma
ASP.NET Core ile API geliştirmeye başlamak için öncelikle bir proje oluşturmanız gerekir. .NET CLI veya Visual Studio kullanarak hızlıca bir API projesi oluşturabilirsiniz.
.NET CLI ile Proje Oluşturma
dotnet new webapi -n MyApiProject
Bu komut, MyApiProject
adında yeni bir ASP.NET Core Web API projesi oluşturur.
Visual Studio ile Proje Oluşturma
1. Visual Studio’yu açın ve “Yeni Proje Oluştur” seçeneğini tıklayın.
- “ASP.NET Core Web API” şablonunu seçin.
Temel Bileşenler
ASP.NET Core API projelerinde birkaç temel bileşen bulunur. Bunlar, Controller’lar, Middleware’ler ve Dependency Injection gibi kavramlardır.
Controller’lar
Controller’lar, API isteklerini işleyen sınıflardır. Her bir Controller, bir veya birden fazla endpoint tanımlayabilir.
using Microsoft.AspNetCore.Mvc; [ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase { [HttpGet] public IEnumerable<WeatherForecast> Get() { // İş mantığı burada yer alır } }
Bu örnekte, WeatherForecastController
sınıfı bir HTTP GET isteği işleyen bir endpoint tanımlar.
Middleware
Middleware, HTTP isteklerini işleyen yazılım bileşenleridir. ASP.NET Core, istekleri işlemek için bir middleware zinciri kullanır.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
Bu örnekte, uygulama isteklerini yönlendirmek için gerekli middleware bileşenleri yapılandırılmıştır.
Dependency Injection
ASP.NET Core, yerleşik Dependency Injection (DI) desteği sunar. DI, sınıfların bağımlılıklarını dışarıdan almasını sağlar.
public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddScoped<IMyService, MyService>(); }
Bu örnekte, IMyService
arayüzü MyService
sınıfı ile eşleştirilmiştir.
Veri Erişimi
API’ler genellikle veri ile çalışır. ASP.NET Core, veri erişimi için Entity Framework Core gibi güçlü araçlar sunar.
Entity Framework Core Kullanımı
Entity Framework Core, veritabanı işlemlerini kolaylaştıran bir ORM (Object-Relational Mapping) aracıdır.
public class ApplicationDbContext : DbContext { public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { } public DbSet<Product> Products { get; set; } }
Bu örnekte, ApplicationDbContext
sınıfı veritabanı bağlantısını ve Products
tablosunu tanımlar.
Veritabanı Bağlantısı Yapılandırma
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); }
Bu örnek, DefaultConnection
bağlantı dizesi kullanılarak SQL Server’a bağlanmayı gösterir.
Performans Optimizasyonu
Performans, API geliştirme sürecinde önemli bir faktördür. ASP.NET Core, performansı artırmak için çeşitli özellikler sunar.
Caching
Caching, sık kullanılan verilerin saklanarak daha hızlı erişilmesini sağlar.
public void ConfigureServices(IServiceCollection services) { services.AddResponseCaching(); } public void Configure(IApplicationBuilder app) { app.UseResponseCaching(); }
Bu örnekte, yanıt önbellekleme etkinleştirilmiştir.
Asenkron Programlama
Asenkron programlama, API performansını artırmanın etkili bir yoludur.
[HttpGet] public async Task<IEnumerable<Product>> GetProductsAsync() { return await _context.Products.ToListAsync(); }
Bu örnek, veritabanından ürünleri asenkron olarak getirir.
Güvenlik
API güvenliği, kullanıcı verilerini korumak için kritik öneme sahiptir. ASP.NET Core, güvenlik için çeşitli mekanizmalar sunar.
JWT Authentication
JWT (JSON Web Token), API’ler için yaygın olarak kullanılan bir kimlik doğrulama yöntemidir.
public void ConfigureServices(IServiceCollection services) { services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = Configuration["Jwt:Issuer"], ValidAudience = Configuration["Jwt:Audience"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:Key"])) }; }); }
Bu örnek, JWT kimlik doğrulamasını yapılandırır.
Hata Yönetimi
Hata yönetimi, API’lerin güvenilirliğini artırmak için önemlidir.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseExceptionHandler("/Home/Error"); }
Bu örnek, hata yönetimi için bir hata işleyici tanımlar.
Sonuç
ASP.NET Core ile API geliştirmek, esnek ve güçlü bir çözüm sunar. Performans, güvenlik ve veri erişimi gibi konularda sunduğu araçlar sayesinde, modern ve ölçeklenebilir API’ler oluşturabilirsiniz. İster VDS Sunucular üzerinde ister Cloud Sunucular üzerinde çalışın, ASP.NET Core ile güçlü API’ler geliştirmek mümkün.