ASP Genel VMware

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

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

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.