1. Anasayfa
  2. ASP.NET

ASP.NET Core Routing Temelleri

ASP.NET Core Routing Temelleri
ASP.NET Core Routing Temelleri
0

Giriş

ASP.NET Man
ASP.NET Man

ASP.NET Core, dinamik web uygulamaları oluşturmak için güçlü bir framework’tür. Bu makalede, ASP.NET Core’un yönlendirme mekanizmasının temellerini inceleyeceğiz. Yönlendirme, gelen HTTP isteklerini doğru denetleyicilere veya uç noktalara yönlendirmek için kullanılır. Odak anahtar kelimemiz ASP.NET Core Yönlendirme olacak.

Routing Nedir?

Routing, türkçe kelime anlamı olarak yönlendirme, kullanıcı isteklerinin doğru denetleyici veya uç noktaya yönlendirilmesini sağlar. ASP.NET Core’da yönlendirme, Konvansiyonel Yönlendirme ve Attribute Yönlendirme olmak üzere iki ana şekilde yapılandırılabilir.


Konvansiyonel Routing

Konvansiyonel routing, Startup.cs dosyasında tanımlanır ve önceden tanımlanmış URL desenlerine dayanır. Bu yöntem, belirli kalıplara uyan URL’lerin belirli denetleyici ve eylemlere yönlendirilmesini sağlar.

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

Attribute Routing

Attribute routing, doğrudan denetleyiciler ve eylemler üzerinde tanımlanır, daha esnek ve okunabilir bir yönlendirme yapısı sunar.

[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
    [HttpGet("{id}")]
    public IActionResult GetProduct(int id)
    {
        //...
    }
}

Middleware and Endpoint Routing

ASP.NET Core, yönlendirme işlemini middleware kullanarak gerçekleştirir. UseRouting ve UseEndpoints middleware bileşenleri, istekleri doğru uç noktaya yönlendirir.

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

Route Kısıtlamaları ve Özel Route İşleyicileri

Route kısıtlamaları, belirli kriterlere uyan URL’lerin işlenmesini sağlar. Özel route işleyicileri ise daha karmaşık yönlendirme senaryoları için kullanılır.

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "productRoute",
        pattern: "products/{category}/{id:int:min(1)}",
        defaults: new { controller = "Products", action = "Details" });
});

Challenge

ASP.NET Core’da yönlendirme mekanizmasını anladığınıza göre, şimdi kendi uygulamanızda karmaşık bir yönlendirme senaryosu oluşturmayı deneyin. Dinamik parametreler ve rota kısıtlamaları içeren bir rota tanımlayın ve bu rota üzerinden veri çekmeyi deneyin.

Challenge Çözümü

İşte karmaşık bir yönlendirme senaryosu oluşturmak için bir örnek çözüm:

1. Karmaşık Bir Rota Tanımlama: Startup.cs dosyanıza aşağıdaki rotayı ekleyin.

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "productRoute",
        pattern: "products/{category}/{id:int:min(1)}",
        defaults: new { controller = "Products", action = "Details" });
});

2. Controller Action: ProductsController adlı bir denetleyici oluşturun ve Details eylemini ekleyin.

public class ProductsController : Controller
{
    public IActionResult Details(string category, int id)
    {
        // Fetch product details based on category and id
        var product = GetProduct(category, id);
        if (product == null)
        {
            return NotFound();
        }
        return View(product);
    }

    private Product GetProduct(string category, int id)
    {
        // Logic to retrieve product from the database
        // For demonstration, returning a mock product
        return new Product { Id = id, Category = category, Name = "Sample Product" };
    }
}

3. Route test et: Uygulamanızı çalıştırın ve /products/electronics/1 adresine gidin. Bu, ProductsController içindeki Details eylemine yönlendirilecek ve ürün detayları getirilecektir.

ASP.NET Core Routing Hakkında Sık Sorulan Sorular (SSS)

ASP.NET Core Routing nedir?

ASP.NET Core Yönlendirme, gelen HTTP isteklerini web uygulamasındaki uygun denetleyici eylemlerine veya uç noktalara yönlendiren bir mekanizmadır. URL’lerin denetleyicilere ve eylemlere nasıl eşleneceğini tanımlar.

ASP.NET Core’da bir route nasıl tanımlanır?

Rotalar, Startup.cs dosyasında konvansiyonel yönlendirme kullanılarak veya denetleyiciler ve eylemler üzerinde attribute yönlendirme kullanılarak tanımlanabilir. Konvansiyonel yönlendirme önceden tanımlanmış bir URL deseni kullanır, attribute yönlendirme ise denetleyici yöntemleri üzerinde tanımlanır.

Konvansiyonel Routing ve Attribute Routing arasındaki fark nedir?

Konvansiyonel routing, Startup.cs dosyasında tanımlanır ve önceden tanımlanmış desenler kullanır. Attribute routing, denetleyici eylemleri üzerinde tanımlanır ve daha esnek ve okunabilir bir yönlendirme yapısı sunar.

Middleware, ASP.NET Core Yönlendirme’de nasıl bir rol oynar?

Middleware bileşenleri, UseRouting ve UseEndpoints gibi, ASP.NET Core’da yönlendirme işlemini kurmak için kullanılır. Gelen istekleri işler ve yönlendirme yapılandırmasına göre uygun uç noktaya yönlendirir.

Route kısıtlamaları nedir?

Route kısıtlamaları, bir routeden gelen isteği eşleştirmesi için karşılaması gereken koşullardır. URL parametreleri için veri türlerini, değer aralıklarını ve diğer kriterleri zorlarlar.

Bir uygulamada birden fazla yönlendirme stratejisi kullanabilir misiniz?

Evet, ASP.NET Core, aynı uygulama içinde hem konvansiyonel hem de attribute yönlendirme kullanımını destekler. Bu, geliştiricilerin uygulamanın farklı bölümleri için en iyi yönlendirme stratejisini seçmelerine olanak tanır.

ASP.NET Core’da gerçek zamanlı web işlevselliği nasıl sağlanır?

ASP.NET Core, gerçek zamanlı web işlevselliğini sağlamak için SignalR kullanır. SignalR, sunucu ve istemci arasında çift yönlü iletişim sağlar, gerçek zamanlı güncellemeler ve etkileşimler için olanak tanır.

ASP.NET Core’da Endpoint Routing nedir?

Endpoint Routing, ASP.NET Core’da tanımlanan uç noktalara istekleri eşleştiren bir sistemdir. Yönlendirme yapılandırmasını middleware’den ayırarak yönlendirme işlemini daha esnek ve verimli hale getirir.

ASP.NET Core’da karmaşık yönlendirme senaryoları nasıl yapılandırılır?

Karmaşık yönlendirme senaryoları, dinamik parametreler ve kısıtlamalar içeren rota şablonları kullanılarak yapılandırılabilir. Özel rota işleyicileri de daha gelişmiş yönlendirme ihtiyaçları için kullanılabilir.

Results

Share your score!
Tweet your score!
Share to other

#1. ASP.NET Core’da yönlendirmenin(routenin) temel amacı nedir?

#2. Konvansiyonel route genellikle hangi dosyada tanımlanır?

#3. Attribute yönlendirme nerede tanımlanır?

#4. ASP.NET Core’da routeyi etkinleştirmek için hangi middleware bileşenleri gereklidir?

#5. ASP.NET Core’da bir route kısıtlaması nedir?

#6. Bir denetleyici eyleminde [HttpGet(“{id:int:min(1)}”)] özniteliğinin amacı nedir?

#7. ASP.NET Core’da gerçek zamanlı web işlevselliği hangi özellik ile sağlanır?

Challenge Sorusu: Uygulamanızda /products/{category}/{id:int:min(1)} formatında URL’leri işleyen bir route oluşturun. Startup.cs dosyasında gerekli kodu yazın ve bu routeyi işleyen bir denetleyici oluşturun.

Finish
Software is easier with us
Software is easier with us

References
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-8.0
https://www.c-sharpcorner.com/article/routing-in-asp-net-core/
https://www.buraksenyurt.com/post/AspNet-Core-Routing-Mekanizmas%C4%B1n%C4%B1-Kavramak

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir