Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan ASP.NET Core MVC mimarisindeki routing yapısını anlatan kapsamlı bir eğitim içeriğidir.
- Video, ASP.NET Core MVC'de routing yapısının temellerinden başlayarak, UseRouting middleware, UseEndpoints, default ve custom rotaların oluşturulması, rota şablonlarında parametre tanımlama ve kısıtlamalar, attribute routing ve custom route handler oluşturma konularını detaylı şekilde ele almaktadır. Eğitmen, teorik bilgileri anlatıp ardından pratik uygulamalarla desteklemektedir.
- Videoda ayrıca route parametre kısıtlamaları (integer, string, decimal, datetime, alpha, karakter sayısı kısıtlamaları), custom constraint'lerin nasıl oluşturulacağı ve uygulandığı, konvansiyonel ve attribute tabanlı routing yöntemleri arasındaki farklar da örneklerle açıklanmaktadır. Video, bir eğitim serisinin bir parçası olup, bir sonraki derste custom route handler konusunun inceleneceği belirtilmektedir.
- 00:01ASP.NET Core MVC'de Routing Yapısı
- Routing yapısı, web uygulamalarında gelen isteklerin hangi kontrolleri tetikleyeceğini belirleyen kritik bir mekanizmadır.
- Routing, gelen istekleri ayırt ederek doğru kontrolleri ve action'ları tetiklemeyi sağlar.
- Ders kapsamında routing yapısı, UseRouting middleware'i, UseEndpoints ile rota oluşturma ve custom rotaların nasıl tanımlandığı ele alınacaktır.
- 03:23Routing Yapısının Önemi
- Routing, gelen isteğin hangi rotaya gideceğini belirleyen şablonlardır ve ASP.NET Core MVC'de hangi kontrollerin ayağa kaldırılacağını belirler.
- UseRouting middleware'i, gelen request'in rotalarını ayrıştırıp ilgili kontrolleri ayağa kaldırır ve gerekli action'ları tetikler.
- UseEndpoints middleware'i, rotaları tarif etmeyi sağlayan yapıdadır ve rotaları tanımlama operasyonu burada gerçekleştirilir.
- 06:30Default ve Custom Rotalar
- MVC mimarisinde rotaları tanımlamak için öncelikle MapDefaultControllerRoute fonksiyonu kullanılır.
- Default rotada süslü parantezler parametrelere karşılık gelir ve controller, action ve id gibi üç parametre bulunur.
- Controller ve action parametreleri sistem tarafından ön tanımlı olarak algılanırken, id gibi diğer parametreler custom parametrelerdir.
- 09:07ASP.NET MVC'de Rota Tanımlama
- ASP.NET MVC'de rotalar tanımlanırken "map default controller root" fonksiyonu kullanılır ve bu fonksiyon controller ve action parametrelerini gerektirir.
- Eğer controller ve action parametreleri boş gelirse, varsayılan olarak "Home" controller'ı ve "Index" action'ı tetiklenir.
- Rota tanımlamasında süslü parantezler kullanılarak parametreler belirtilir ve bu parametreler istekte gönderilen değerlerle eşleştirilir.
- 11:43Özelleştirilmiş Rotalar Oluşturma
- "Map route" fonksiyonu kullanılarak özelleştirilmiş rotalar oluşturulabilir.
- Özelleştirilmiş rotada "name" parametresi rotanın benzersiz bir ismi belirtir.
- "Pattern" parametresi rota şablonunu belirtir ve süslü parantezler içindeki değerler parametre olarak kabul edilir.
- 13:09Rota Şablonları ve Parametreler
- Rota şablonlarında süslü parantezler içindeki değerler parametre olarak kabul edilir ve istekte gönderilen değerlerle eşleştirilir.
- Rota şablonlarında statik değerler de kullanılabilir ve bu değerler her zaman aynı kalır.
- Parametreler için default değerler belirtilebilir, aksi takdirde boş değerler gönderilirse mimari hata verir.
- 17:57Özelleştirilmiş Rotaların Kullanımı
- Özelleştirilmiş rotaları daha da özelleştirmek için "default" parametresi kullanılabilir.
- "Default" parametresi ile anasayfa gibi belirli sayfalara yönlendirme yapılabilir.
- Bu yöntem sayesinde fiziksel bir yönlendirme yapılmadan, statikmiş gibi görünen sayfalara yönlendirme yapılabilir.
- 19:18Rota Tanımlama ve Sıralama
- Ana sayfaya tıkladığımızda, "home" kontrolörünün altındaki "index" action'ı tetiklenir.
- Rota tanımlamaları özelden genele doğru sıralanmalıdır; özel rotalar üstte, genel rotalar altta olmalıdır.
- Özel rotaların her birinin ismi benzersiz olmalıdır.
- 20:41URL Oluşturma ve Rotalar
- .NET Core MVC mimarisinde oluşturulan URL'ler uygun olan rota üzerinden oluşturulur.
- HTML helper veya tag helper ile oluşturulan linkler, en uygun rota tarafından işlenir.
- Tanımlanan rotalar mimari tarafından URL oluştururken ve yönlendirmelerde baz alınır.
- 23:19Parametreler ve Rotalar
- Rotalarda süslü parantezler üzerinden taşınan değerler parametre olarak değerlendirilir.
- Parametreler değişkenlerdir ve URL'de farklı değerler alabilirler.
- Controller ve action isimleri de parametre olarak tanımlanabilir ve farklı değerler alabilir.
- 24:33Parametre Tanımlama ve Kısıtlamalar
- Rotalarda parametreler tanımlanabilir ve default değerler verilebilir.
- Nolable (isteğe bağlı) olmayan parametreler için gelen istekte kesinlikle değer gelmesi gerekir.
- Parametrelerin sıralaması önemlidir; isteğe bağlı parametreler sağdan başlayarak tanımlanmalıdır.
- 26:32Parametre Türleri ve Yakalama
- URL'den gelen parametrelerin türleri sistem tarafından belli olmaz, herhangi bir türde değer alabilirler.
- Action'lar parametreleri doğrudan parametre olarak alabilir veya bir class'ın property'leri şeklinde alabilir.
- URL'den gelen parametrelerin türünü bilmediğimizde, en geniş türle (örneğin string) karşılamanız daha doğru olacaktır.
- 28:57Route Parametreleri ve Constraintler
- Route parametrelerini belirli değerler ve türlerle kısıtlayabiliriz, bu kısıtlamalara "route constraintleri" denir.
- Parametre türünü belirtmek için süslü parantez içinde parametre isminin yanına tür bilgisi eklenir (örneğin: {id:int}).
- Parametrelerin null olabilmesi için "nullable" operatörü kullanılabilir (örneğin: {id:int?}).
- 30:41Sayısal Veri Türleri ve Kısıtlamalar
- Sayısal değerlerde sadece "integer" türü kullanılabilir, "short" gibi daha küçük türler kullanılamaz.
- Metinsel değerler için "string" türü kullanılır, ancak "string" belirtmeden bırakıldığında varsayılan olarak tüm türler kabul edilir.
- Route constraintleri sayesinde gelen değerlerin türünü kontrol edebilir ve hatalı istekler için 404 hatası alınabilir.
- 33:45Diğer Veri Türleri ve Kısıtlamalar
- Route constraintlerinde kullanılabilecek türler: integer, decimal, double, float, guid, datetime, date, time ve alpha.
- "Alpha" türü sadece İngilizce karakterleri (a-z, A-Z) kabul eder, Türkçe veya Japonca karakterler kullanılamaz.
- Parametrelerin karakter sayısını belirlemek için "len" fonksiyonu kullanılabilir, örneğin {exe:len(12)} ifadesi 12 karakterli bir değer gerektirir.
- 38:19Kombin Kısıtlamalar
- Farklı constraintler kombin edilebilir, örneğin bir parametre hem alfanumerik hem de belirli bir karakter sayısına sahip olabilir.
- Kombin kısıtlamalar örneğin {exe:alpha|len(12)} şeklinde belirtilir, bu ifade sadece İngilizce karakterlerden oluşan 12 karakterli bir değeri kabul eder.
- 39:15Custom Constraint Oluşturma
- Custom constraint oluşturmak için IRouteConstraint interface'i kullanılır ve bu interface'in somut bir nesnesi oluşturulmalıdır.
- Custom constraint'ler genellikle bir klasörde (örneğin "constraints") tutulur ve isimlerinin sonuna "Constraint" yazmak bir gelenektir.
- Custom constraint oluşturmak için sınıf IRouteConstraint interface'ini implement etmek ve "Match" fonksiyonunu uygulamak gerekir.
- 42:03Constraint'ı Sisteme Eklemek
- Oluşturulan custom constraint'ı sisteme eklemek için Services'de Configure metoduna eklenmesi gerekir.
- Configure metodunda RouteOptions türünde bir parametre tanımlanır ve options.MapRoute metodu kullanılarak custom constraint tanımlanır.
- Custom constraint, URL'lerde kullanılabilecek bir etiket olarak tanımlanır ve rotada kullanılabilecek bir constraint olarak işlev görür.
- 45:40Constraint'ın Çalışma Prensibi
- Constraint, action metoduna gitmeden önce tetiklenir ve bir middleware veya filtre gibi araya girerek parametreleri doğrular.
- Constraint içinde context, route, routeKey gibi parametreler kullanılarak gelen istekteki değerler yakalanabilir.
- Constraint true döndürürse ilgili URL geçerli kabul edilir, false döndürürse URL geçersiz sayılır.
- 47:20Controller Bazlı Rota Tanımlama
- Rota tanımlama iki yöntemle yapılabilir: konvansiyonel (geleneksel) yöntem ve Attribute (öznitelik) tabanlı yöntem.
- Konvansiyonel yöntemde rotalar Startup dosyasında merkezi bir şekilde tanımlanırken, Attribute tabanlı yöntemde controller bazlı rota tanımlamaları yapılabilir.
- Controller bazlı rota tanımlamalarında Route attribute kullanılarak controller ve action için özel rota şemaları belirlenebilir.
- 49:26Konvansiyonel ve Attribute Tabanlı Routing Farkları
- Konvansiyonel routing'de ön tanımlı parametreler (controller, action) süslü parantezlerle tanımlanırken, attribute tabanlı routing'de ön tanımlı parametreler köşeli parantezlerle tanımlanır.
- Özel parametreler (custom parametreler) her iki yöntemde de süslü parantezlerle tanımlanır.
- Attribute tabanlı routing kullanırken, Startup'da "app.UseEndpoints(endpoints => endpoints.MapControllers());" ifadesiyle controller'ların gelen istekleri route etmesi sağlanmalıdır.
- 54:06Attribute Tabanlı Routing Örnekleri
- Attribute tabanlı routing'de route şablonları özelleştirilebilir, örneğin "[Route("ana/{action}"]" şeklinde belirlenerek "ana" adı verilen bir route oluşturulabilir.
- Action'ları da özelleştirmek mümkündür, örneğin "[Route("ana/{action}"]" ve "public IActionResult Index()" yerine "public IActionResult In()" şeklinde tanımlanabilir.
- MVC mimarisinde genellikle konvansiyonel yaklaşım kullanılırken, API'lerde attribute tabanlı routing tercih edilir.
- 57:21Parametre Tanımlama ve Dersin Sonu
- Attribute tabanlı routing'de parametre tanımlaması konvansiyonel yaklaşımda olduğu gibi süslü parantezlerle yapılır.
- Parametreler için veri tipi belirtilir ve nullable olup olmadığı işaretlenebilir.
- Bir sonraki derste custom route handler oluşturma konusu incelenecektir.