Yönlendirme kısıtlamaları
ASP.NET Core, yönlendirme şablonları tanımlayarak URL'lerde değişkenler iletebilir ve değişkenler için varsayılanlar, isteğe bağlılar ve kısıtlamalar sağlayabilirsiniz.
Kısıtlama, belirtilen kısıtlama adının öznitelik yoluna eklenmesiyle kullanılır ve bu yol aşağıdaki şekilde kullanılır:
Çerçeve içinde bazı kısıtlamalar zaten sağlanmıştır, aşağıdaki gibidir:
Kısıtlamalar | örnek | Maç örnekleri | Göstermek | int | {id:int} | 123456789, -123456789 | Herhangi bir tam sayı eşleşti | bool | {active:bool} | doğru, YANLIŞ | Doğru veya yanlış eşleşme (küçük harf duyarlı) | Tarih saati | {dob:datetime} | 2016-12-31, 2016-12-31 19:32 | Geçerli DateTime değerleriyle eşleşiyor (sabit yerlilikte - uyarıya bakınız) | ondalık | {price:decimal} | 49.99, -1,000.01 | Geçerli ondalık değerleri eşleştiriyor (sabit yerellikte - uyarıya bakınız) | çift | {weight:double} | 1.234, -1,001.01e8 | Geçerli çift değerleri eşleştiriyor (sabit yerellikte - uyarıya bakınız) | Float | {weight:float} | 1.234, -1,001.01e8 | Geçerli float değerleriyle eşleşiyor (sabit yerellikte - uyarılara bakınız) | Rehber | {id:guid} | CD2C1638-1638-72D5-1638-DEADBEEF1638, {CD2C1638-1638-72D5-1638-DEADBEEF1638} | Geçerli GUID değerleriyle eşleşiyor | uzun | {ticks:long} | 123456789, -123456789 | Geçerli uzun değerleri eşleştirir | minlength(değer) | {kullanıcı adı:minlength(4)} | Rick | Dizinin en az 4 karakter olması gerekir | maxlength(değer) | {dosya adı:maxlength(8)} | Richard | Dizileri 8 karakteri aşmamalıdır | uzunluk (uzunluk) | {dosya adı:uzunluk(12)} | somefile.txt | Dizinin tam olarak 12 karakter olması gerekir | uzunluk(min,max) | {filename:length(8,16)} | somefile.txt | Dizinin en az 8 karakter ve en fazla 16 karakter olması gerekir | min(değer) | {age:min(18)} | 19 | Tam sayı değeri en az 18 olmalıdır | max(değer) | {age:max(120)} | 91 | Tam sayı değeri 120'yi geçmemelidir | menzil(min,max) | {yaş:aralık(18,120)} | 91 | Tam sayı en az 18 olmalı ve 120'yi aşmamalıdır | alfa | {name:alpha} | Rick | Dizide bir veya daha fazla alfabetik karakter (a-z, harf-duyarlı) oluşmalıdır. | regex(ifade) | {ssn:regex(^\d{{3}}-\d{{2}}-\d{{4}}$)} | 123-45-6789 | Dizinin düzenli ifadeyle eşleşmesi gerekir (düzenli ifadeleri tanımlama ipuçlarına bakınız) | Gerekli | {ad:gerekli} | Rick | URL oluşturma sırasında parametrik olmayan değerlerin varlığını zorunlu kılmak için kullanılır |
Yerleşik kısıtlamalar çoğu yaygın kullanım durumunda işe yarar, ancak bazen istediğimiz etkiyi özelleştirmemiz gerekir.
Özel yönlendirme kısıtlamaları
Özel bir kısıtlama, IRouteConstraint arayüzünü uygulamak ve ardından dört parametreye sahip Match yöntemini aşırı yüklemektir.
İlk parametre olan httpContext, mevcut talebin bağlamıdır
İkinci parametre olan güzergah ise mevcut kısıtlamanın ait olduğu güzergahtır
Üçüncü parametre olan routeKey, şu anda kontrol edilen değişkenin adıdır; örneğin makalenin başındaki örnekte id Dördüncü parametre değerleri, mevcut URL'nin eşleştiği sözlük değeridir; örneğin makalenin başındaki örnek rotası gibi; URL users/1 ise, o zaman anahtar = id , değer = 1 olan bir sözlük vardır. Tabii ki, kontrolör, eylem gibi diğer değişkenler için de değerler var.
Beşinci parametre olan routeDirection, URL'nin web tarafından mı istendiğini yoksa Url.Action gibi bir yöntemle oluşturulup oluşturulmadığını gösteren sayılmış bir değerdir.
Örneğin, rotadan geçen parametrelerin belirtilen sayım değeri olması gerektiğini belirten bir kısıtlama tanımlamak istiyoruz.
Önce bir enum tanımlayalım:
Sonra kısıtlamaları tanımlayın:
Startup.cs'de ConfigureServices metoduna özel kısıtlamalar ekleyin:
Rotalar üzerindeki kısıtlamaların kullanılması:
(WebApplicationTest mevcut isim alanıdır)
{id:int:min(2)} rotası min(2) kullanmalı, aksi takdirde id = 0 veya id = 1 için çakışma olur.
Programı çalıştırın ve rotalar api/test/0, api/test/1, api/test/true ve api/test/false olduğunda özel kısıtlamalarımızı eşleştirin.
Eğer rota api/test/{tamsayı 2'den büyük} ise, ikinci rotayı eşleştirin.
Diğer vakalar üçüncü yola uyuyor.
son
Yönlendirme kısıtlamaları bazı durumlarda çok faydalı bir özelliktir; bu da kontrolcüdeki kontrol parametrelerini azaltabilir; kısmi parametre doğrulama fonksiyonu deklaratif attruibute kullanılarak uygulanabilir ve bazı tekrarlanan kontroller kamu kullanımı için kısıtlamalara çıkarılabilir.
Kısıtlama oluşturucusu enjekte edilebilir, bu yüzden çok genişletilebilir ve bazı parametre doğrulamaları veritabanını sorgulayarak yapılabilir.
Resmi web sitesi sadece kısa bir şekilde yönlendirme kısıtlamalarından bahsediyor ve bu makale yönlendirme kısıtlamalarının kullanımına özel örnekler sunmaktadır.
|