.net core custom routes (custom url) kullanımı
Dotnet Core Custom Routes Kullanımı
Merhaba arkadaşlar.
Bu yazımızda .net core custom route yapısı ile özel url yapısı oluşturmayı göreceğiz. Ama isterseniz dotnet core routes yapısı ile ilgili kısa bir bilgi verelim. dotnet core routes aslında mvc kullanan arkadaşlarımızında bildiği Site adı/Home/Index yapısı diye tabir edeceğimiz url pattern’dir. Bu pattern sayesinde dotnet core web uygulmasına gelen istekler hangi controller ve hangi action methoduna yönlendirileceklerini bilmiş oluyor. Bu sayede url yapısı kullanılarak istenen controller ve action methodlar çalıştırılmış oluyor. Fakat bazen default olarak tanımlı olan routes işimize yaramayabilir ve bizde kendimize özel bir url yapısını tanımlamak isteyebilir. İşte burada default routes yapısına ek olarak kendi custom routes yapımızı sisteme tanıtmamız gerekiyor. Lafı daha fazla uzatmadan isterseniz örnek proje üzerinden devam edelim.
Dotnet custom routes işlemi için öncelikle bir adet boş bir dotnet core web projesi oluşturalım. Projemizi oluşturmak için visual studio code editörü powershell terminal alanını veya command prompt (komut istemcisini) kullanabilirsiniz. Ben vs code editörünü kullanacağım. Bunun için vscode editörünü çalıştırıp
File -> Open Folder yolunu izleyerek projemi oluşturacağım klasörü seçiyorum. Hemen akabinde vs code editörümüzde terminal ekranımıza aşağıdaki komut satırını yapıştırıyoruz. Vs Code terminal ekranı görünmüyorsa üst menüden View -> Terminal yolunu izleyerek terminal ekranına erişebilirsiniz.
1 |
dotnet new web -o CustomRoute_Project |
Yukarıdaki komut satırını çalıştırdıktan sonra proje klasörümüz altında CustomRoute_Project adında bir klasör oluşturulup hemen akabinde boş bir web projesi için gerekli dosyalarımız bu klasör altına kopyalanacaktır.
İsterseniz bu adımda terminal ekranına aşağıdaki komutu yazarak projenizin doğru bir şekilde oluşturulup oluşturulmadığını kontrol edebilirsiniz.
1 |
dotnet run |
yukarıdaki komut ile birlikte projeniz derlenecek ve http://localhost:5000 adresinin dinlendiğine dair bir yazı belirecektir. Bu adrese giderek projenizin çıktısını görebilirsiniz. Projeyi durdurmak için Ctrl+C tuşuna basıyoruz ve tekrardan projemize geri dönüyoruz. Bu işlemden sonra sıra geldi gerekli ayarları yapmaya bunun için Startup.cs dosyamızı açıyoruz ve aşağıdaki gibi düzenliyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; namespace CustomRoute_Project { public class Startup { // This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // komutunu ekliyoruz } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } /*Custom route kodlarımızı yazıyoruz*/ // static (wwwroot) klasörü altındaki dosyalara erişebilmek için bu komutu kullanabilirsiniz. app.UseStaticFiles(); app.UseMvc(routes => { // url yapımızı oluşturuyoruz // artık sitemize => blog/icerik/2019/1234567890 şeklinde bir istek geldiğinde // Blog Controller içerisindeki Detail ActionResult alanı tetiklenecektir. // yil=@"\d{4}" ile yil parametresinin 4 karakterli sayısal bir değer alabileceğini belirtiyoruz // blogId=@"\d{10}" ile blogId parametresinin 10 karakterli sayısal bir değer alabileceğini belirtiyoruz routes.MapRoute( "customroutes", "blog/icerik/{yil}/{blogId}", new {controller ="Blog", action="Detail"}, new {yil=@"\d4", blogId=@"\d10"}); // default url routing kontrolümüzü yazıyoruz // default routes tanımını herzaman en alt satırda olmasını sağlamalıyız // aksi halde custom routes yapımız göz ardı edilebilir ve bu sebepten dolayı // custom routes yapımız çalışmayabilir. routes.MapRoute(name:"default", template:"{controller=Home}/{action=Index}/{Id?}"); }); } } } |
.Şimdi hızlıca controller klasörümüzü ve ardından ilgili controller sınıflarımızı oluşturalım. Bunu için projemize
– Controllers, Views Klasörlerini ekliyoruz.
– Views Klasörü altına Home ve Blog klasörlerini ekliyoruz.
– Home Klasörü altına File -> New File yolunu izleyip Index.cshtml adında bir dosya ekliyoruz.
– Son olarak Controllers klasörü altına HomeController.cs ve BlogController.cs adında iki tane dosya ekliyoruz.
Şimdi Home controller dosyamızın içeriğine aşağıdaki kodları yapıştırın.
1 2 3 4 5 6 7 8 9 10 11 |
// HomeController.cs using Microsoft.AspNetCore.Mvc; namespace CustomRoute_Project{ public class HomeController : Controller{ public IActionResult Index(){ return View(); } } } |
Şimdi de BlogContoller.cs dosyamızın içeriğine aşağıda ki kodu yapıştıralım.
1 2 3 4 5 6 7 8 9 10 11 |
// BlogController.cs using Microsoft.AspNetCore.Mvc; namespace CustomRoute_Project{ public class BlogController : Controller{ public IActionResult Detail(int yil, int blogId){ return Content("<b>Yıl Bilgisi :</b> " + yil + " <b>BlogId Bilgisi :</b>" + blogId); } } } |
Home Klasörü altındaki Index.cshtml dosyamıza aşağıdaki kodları yapıştırıyoruz
1 2 3 4 5 6 7 |
@{ Layout = null; } <h1>Hoşgeldiniz.</h1> <p> Custom rootes örneğine gitmek için <a href="blog/icerik/2019/1234567890">Tıklayınız.</a> </p> |
Şimdi tekrardan terminal ekranımıza dönüp aşağıdaki kodu yazıyoruz.
1 2 |
dotnet restore dotnet run |
Örnek Ekran Görüntüleri;
Örnek projeyi indirmek veya incelemek için Tıklayınız.
Faydalı olması dileğiyle…
Son Yorumlar