ASP.NET Web API yönlendirme, kısacasıyla, istemci isteklerinin ilgili Eylemlere eşlenmesi sürecidir. "ASP.NET Web API Uygulama Serisi 03, Yönlendirme Şablonları, Yönlendirme Kuralları, Yönlendirme Ayarları" adlı makalede, şablonlar, konvansiyonlar ve HTTP yöntemleri üzerinden rota ayarlamayı deneyimledim ve bu yaklaşımın avantajı, yönlendirme şablonlarının WebApiConfig sınıfında App_Start klasörünün altında eşit şekilde yerleştirilmiş olmasıdır; bu da yönetim için uygundur, ancak dezavantajı yeterince esnek olmamasıdır.
REST her şeyi bir kaynak olarak ele alır ve bazen Müşteri ve Siparişler gibi alt kaynaklara sahip bir kaynak, müşteriler/1/siparişler gibi bir istek girmek isteyebilir, ancak bu yolu sadece geleneklerle sağlamak zordur. Aslında, ASP.NET Web API'si bize Eylem'e doğrudan bağlanabilen, kullanımı oldukça esnek ve sezgisel olan bir Route özelliği sunuyor.
ASP.NET MVC4'te Route özelliğini nasıl kullanacağımızı deneyelim.
Route özniteliğine izin ver
Önce WebApiConfig'de kurmanız gerekiyor.
Yukarıdaki MapHttpAttributeRoutes yöntemi yalnızca ASP.NET Web API'nin yeni sürümlerinde mevcutturEğer sürümünüz nispeten düşükse, eski sürümü kaldırıp en son sürümü NuGet Paket Yöneticisi konsolu üzerinden kurabilirsiniz.
Sonra, Global.asax'ta WebApiConfig'in orijinal kayıt şeklini yorumlamalı ve aşağıdaki gibi yeni bir yöntem benimsemelisiniz:
Bu aşamada, proje çalıştırıldığında aşağıdaki hata raporlanabilir:
Bunun nedeni, ASP.NET Web API'nin en son sürümünü indirirken, icrosoft'un en son sürümünü de indirdim. AspNet.WebApi.HelpPage。 HelpPage'in en son sürümünü kaldırıp eski sürümü indirebilirsiniz.
Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force Install-Package Microsoft.AspNet.WebApi.HelpPage -pre
Route özelliğini kullanın
Bir Cusomter sınıfı oluşturun.
Bir Order sınıfı oluşturun.
Order koleksiyonunu almak için bir Veritabanı sınıfı oluşturun.
Böyle yazılmış boş bir API denetleyicisi oluşturun:
Tarayıcınızda şunları yazın:
Geliştirme için ASP.NET MVC4 kullanıyorsanız, program ilk kez çalıştırıldığında aşağıdaki hatayı alabilirsiniz:
[A] System.Web.WebPages.Razor.Configuration.HostSection adresi [B]System.Web.WebPages.Razor.Configuration.HostSection adresine aktarılamaz. A Tipi, "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" ("C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ içinde" bağlamında "Default" bölümünde) kaynaklıdır. System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Tip B, "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (bağlamda "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ içindeki "Default" bağlamında) türetilmiştir Geçici ASP.NET Dosyaları/vs/feb7ce97/a525d58a/asse
Bunun nedeni, ASP.NET Web API'sinin en son sürümünü indirirken Razor'ın en son sürümü kullanılmasıdır. Web.config'in kök dizininde aşağıdaki yapılandırmayı yapılandırmanız gerekir:
RoutePrefix özelliğini kullanın
Bir API denetleyicisinde tüm Eylemleri ön eklemek istiyorsanız, API denetleyicisine RoutePrefix özelliğini koyabilirsiniz.
Örneğin, bunun şu şekilde olmasını istiyoruz: http://localhost/api/customers/1/orders
OrdersController'ı bu şekilde değiştirin.
Ayrıca Route özelliğinde ~ kullanarak Eylemin önek kurallarını geçersiz kılabilirsiniz.
RoutePrefix özelliğiyle tanımlanan önek ayrıca parametre değişkenlerine sahip olabilir:
Yönlendirme kısıtlamaları
Bir rotada parametre değişkenlerini "{parameter variable name: constraint}" ile sınırlayabilirsiniz.
Yukarıda, eğer parça değişkeni id int tipindeyse, ilk Eylem'e yönlendirilir, değilse ikinci Eylem'e yönlendirilir.
ASP.NET Web API yerleşik kısıtlamaları şunları içerir:
{x:alpha} büyük ve küçük harfleri kısıtlar {x:bool} {x:datetime} {x:ondalık} {x:double} {x:float} {x:guid} {x:int} {x:length(6)} {x:length(1,20)} uzunluk aralığını sınırlar {x:uzun} {x:maxlength(10)} {x:min(10)} {x:range(10,50)} {x:regex(regex)}
Bir parametre değişkeni için aynı anda birden fazla kısıtlama ayarlayabilirsiniz:
Kısıtlama kurallarını özelleştirmek için IHttpRouteConstraint arayüzünü uygulayın. 0 olamayacak bir kısıtlama uygulayın.
WebApiConfig'de App_Start klasöründe özel bir kısıtlama kaydedin.
Özel kısıtlamalar kullanın.
İsteğe bağlı parametreler ve varsayılan değerleri
Eğer bir yönlendirme parametre değişkeni isteğe bağlıysa, parametreye ayrıca varsayılan bir değer verilmelidir.
Kısıtlamadan sonra ? ekleyin ve metod parametrelerinde id için varsayılan değeri ayarlayın.
Güzergah için bir isim belirleyin
Roting önceliği
Route özelliği tarafından belirlenen rota önceliği, konvansiyonlar ve RouteOrder özelliğine göre belirlenir.
Kongreler şunlardır:
1. Statik parça değişkenleri 2. Kısıtlamalı parça değişkenleri 3. Kısıtlamasız parça değişkenleri 4. Kısıtlamalı joker parça değişkeni 5. Kısıtlanamamış joker parça değişkenleri
RouteOrder özelliğinin varsayılan değeri 0'dır ve özellik değeri ne kadar küçükse o kadar yüksek olur.
Yukarıda, yönlendirme öncelik sırası şudur:
Orders/details statik parça değişkeni olduğunda, RouteOrder özelliğinin değeri 0'dır orders/{id} ile RouteOrder özelliğinde 0 değerli kısıtlı parça değişkenlerine sahip orders/{customerName}, kısıtlamasız bir parça değişkenidir ve RouteOrder özelliğinin değeri 0'dır orders/{*date}, RouteOrder özelliğinde 0 değere sahip bir joker kart parça değişkenidir emirler/bekleyen RouteOrder özellik değeri 1
|