Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 21930|Yanıt: 1

[WebAPI] web api Route özellik tanımı

[Bağlantıyı kopyala]
Yayınlandı 28.04.2018 10:37:11 | | | |
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






Önceki:Kredi kartıyla neler ödenebildiğine dair kayıt tutun
Önümüzdeki:"MySql.Data.MySqlClient" adlı sabit adlı bir ADO.NET için süreç sağlanamıyor...
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com