ASP.NET Core Yönlendirme (Routing)

A

Bu yazıda, Core'daki yeni yönlendirme özelliklerine dalacağız. ASP.NET MVC ve Web API konusunda bir geçmişiniz varsa, yönlendirmenin yeni bir kavram olmadığını biliyor olabilirsiniz. Ancak, .NET'te web geliştirmeye yeni başladıysanız, yönlendirme, bir istek URL'sini bir denetleyici şeklindeki bir işleyiciye eşlemeyi sorumlu olan bir sistemdir. Bir istek aldığında, Core, gelen isteği işleyebilecek bir işleyici arar ve bu işlem, bir dizi kural temelinde gerçekleştirilir. Aslında, yönlendirme, önceki yazıda öğrendiğimiz "sadece" bir ara yazılımdır.

Yeni bir route oluşturmak için route şablonu sözdizimini bilmeniz gerekir. ASP.NET MVC'de yönlendirme sözdizimi başlangıçtan itibaren mevcutken, Core bu olanakları büyük ölçüde genişletmiştir. Core'da yeni bir web uygulaması oluşturduğunuzda, Startup.cs dosyasında varsayılan bir route otomatik olarak ayarlanır. Boş bir proje ile başlıyorsanız, Microsoft.AspNetCore.Routing NuGet paketini yüklemeniz gerekecektir:

Install-Package Microsoft.AspNetCore.Routing

MVC'yi web projesine eklemek için, Startup.cs dosyasında UseMvc metodunu çağırın ve aşağıdaki gibi varsayılan bir şablon verin:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

(Eğer Visual Studio üzerinden yeni bir MVC uygulaması oluşturursanız, NuGet paketi otomatik olarak yüklenir ve UseMvc metodu Startup.cs dosyasına eklenir.)

UseMvc metodunda belirtilen şablon, Core'a /some/url/42 gibi istekleri, SomeController adında bir denetleyiciye ve Url adında bir eyleme yönlendirecek şekilde ayarlanır; burada id parametresini alır. Şablon içindeki süslü parantezlere dikkat edin. Süslü parantezler içindeki içerik, bir segmenti temsil eder ve bu konuya daha sonra döneceğiz. Öncekilerden farklı olarak, varsayılan değerler segmentlerin bir parçası olarak gömülü olabilir, defaults parametresi aracılığıyla değil (ancak yine de desteklenir). Yukarıdaki örnekte, / isteği HomeController'ın Index eylemini çağıracak ve id parametresi sağlanmadığında veya bu parametrenin değeri null olduğunda işlenecektir. İsteğe bağlı parametreler, bir soru işareti ile sonlandırılır (id?).

Yeni Yönlendirme Özellikleri

Önceki ASP.NET sürümlerinde gördüğümüz özelliklerin yanı sıra, Core'da eklenen bazı yeni özellikler vardır. Şimdi, yönlendirme işlemlerine büyük bir kontrol sağlamak için eklenen yeni özelliklere bakalım.

Yönlendirme Kısıtlamaları

Yönlendirme kısıtlamaları, bir rotadaki izin verilen değerler üzerinde çok daha fazla kontrol sağlar. ASP.NET MVC ile çalışan çoğu kişi, bir rotanın neden bir denetleyiciyle eşleşmediğini anlamaya çalışarak saatler harcamıştır. Yönlendirme kısıtlamaları, bir veya daha fazla segmentteki olası değerlere bazı kısıtlamalar koyar. Bir örneğe göz atalım:

routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id:int}");

Bu örnekte, Core'a id parametresinin tamsayı türünde olması gerektiğini belirtiyoruz. Bu, Core'a id parametresi bir dize olduğunda (örneğin: some/url/somestring) bu isteği eşlememesi gerektiğini söyler. Ayrıca, tamsayılar üzerinde aralıklar, dizeler üzerinde maksimum uzunluk gibi kısıtlamalar tanımlayabilir ve çok daha fazlasını yapabilirsiniz. Yönlendirme Kısıtlamaları hakkında daha fazla bilgi için resmi Yönlendirme Kısıtlama Referansı sayfasını inceleyebilirsiniz.

Joker Karakterlerin Kullanımı

Bir diğer yeni özellik, joker karakterlerin kullanımıdır. Joker karakterler, belirli bir segmentin parçası olarak genelleme yapmak için kullanılır ve bu segmentlerin esnek bir şekilde işlenmesini sağlar. Bir örnek üzerinden inceleyelim:

routes.MapRoute(
    name: "default",
    template: "{controller=Home}/{action=Index}/{id:int}/{*more}");

Bu yapılandırma, /some/url/42 gibi istekleri hem /some/url/42 hem de /some/url/42/details gibi daha fazla segment içeren URL'lere yönlendirebilir. Joker karakter *more, sıfır veya daha fazla segmenti eşleyebilir. Örneğin, bu rota /some/url/42/details/show gibi URL'lere de uyum sağlar.

Önceki sürümlerde olduğu gibi, rota şablonları sadece uygulama başlatılırken değil, niteliklerde de belirtilebilir:

[Route("home/index/{id:int}/{*more}")]
public IActionResult Index(int id)
{
    ...
    return View();
}

Bu örnekte, Index eylemi belirtilen rotaya uyacak şekilde yapılandırılmıştır. *more joker karakteri, istek URL'sindeki herhangi bir ek segmenti alacak ve işleme dahil edecektir.

By Aydın Yağız

Aydın Yağız

Teknolojiye olan tutkumla inovasyonu destekler, kullanıcı deneyimini önceliklerim arasına alırım. Kendi yeteneklerimi ve bilgilerimi paylaşarak, daha geniş bir topluluğun faydalanmasını sağlarım. İş birliği içinde hareket ederek, geleceğin teknoloji dünyasına katkıda bulunmayı hedeflerim. Sizi de bu heyecan verici yolculuğa davet ediyor, fikirlerinizi paylaşmaya ve teknolojiye dair sınırları zorlamaya teşvik ediyorum. Birlikte büyüyelim ve yeni ufuklara açılalım!

İletişime Geçin

Kodlama dünyasına adım atın ve deneyimlerinizi paylaşın. Siz de bu aktif topluluğa katılarak yeni bağlantılar kurun, fikir alışverişinde bulunun ve bilgi birikiminizi artırın.

Özelleştir

Farklı yazı tipleri ve renk seçenekleriyle stilinizi kişiselleştirin. Aşağıdaki örneklerden birini deneyerek sizin için en uygun olanı seçin.

Yazı Tipi Örnekleri

Renk Örnekleri