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.
- Proje Türü Seçimi: “ASP.NET Core Web API” şablonunu seçin.
- 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 TaskGetProductsAsync() { 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.


