Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 21930|Odpowiedź: 1

[WebAPI] Web API Definicja właściwości tras

[Skopiuj link]
Opublikowano 28.04.2018 10:37:11 | | | |
ASP.NET routing API web, mówiąc wprost, to proces mapowania żądań klienta na odpowiadające mu Akcje. W artykule "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" doświadczyłem ustawiania tras przez szablony, konwencje i metody HTTP, a zaletą tego podejścia jest to, że szablony routingu są równomiernie umieszczone w klasie WebApiConfig pod folderem App_Start, co jest wygodne dla zarządzania, ale wadą jest to, że nie jest wystarczająco elastyczne.


REST traktuje wszystko jak zasób, a czasem zasób z zasobami potomnymi, takimi jak Klient i Zamówienia, może chcieć wprowadzić żądanie takie jak klienci/1/zamówienia, ale trudno jest osiągnąć tę drogę wyłącznie konwencjonalnie. W rzeczywistości ASP.NET Web API oferuje nam funkcję Route, którą można bezpośrednio połączyć z Action, co jest bardzo elastyczne i intuicyjne w obsłudze.

Sprawdźmy, jak korzystać z funkcji Trasy w ASP.NET MVC4.

Pozwól na atrybut Route


Najpierw musisz skonfigurować to w WebApiConfig.



Powyższa metoda MapHttpAttributeRoutes jest dostępna tylko w nowszych wersjach ASP.NET Web APIJeśli twoja wersja jest stosunkowo niska, możesz odinstalować starą wersję i zainstalować najnowszą przez konsolę Menedżera Pakietów NuGet.


Następnie w Global.asax musisz skomentować oryginalny sposób rejestracji WebApiConfig i przyjąć nową metodę, w następujący sposób:

W tym momencie uruchamianie projektu może zgłaszać następujący błąd:

Dzieje się tak, ponieważ pobierając najnowszą wersję ASP.NET Web API, pobrałem też najnowszą wersję icrosoft. AspNet.WebApi.HelpPage。 Możesz odinstalować najnowszą wersję HelpPage i pobrać starszą.

Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force
Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre


Użyj właściwości Route

Stwórz klasę Cusomtera.


Stwórz klasę Order.

Utwórz klasę Database, aby pobrać kolekcję Order.



Stwórz pusty kontroler API napisany tak:


Wpisz następujące w swojej przeglądarce:

Jeśli używasz ASP.NET MVC4 do programowania, możesz otrzymać następujący błąd podczas pierwszego uruchomienia programu:

[A] System.Web.WebPages.Razor.Configuration.HostSection nie może być przesyłany do [B]System.Web.WebPages.Razor.Configuration.HostSection. Typ A pochodzi od "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (w "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ w kontekście "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Typ B pochodzi od "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (w kontekście "Default" w "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Tymczasowe ASP.NET pliki/vs/feb7ce97/a525d58a/asse


Dzieje się tak, ponieważ najnowsza wersja Razora jest używana podczas pobierania najnowszej wersji API Web API ASP.NET. Musisz skonfigurować następującą konfigurację w katalogu głównym Web.config:


Użyj funkcji RoutePrefiks


Jeśli chcesz zamontować wszystkie Akcje w kontrolerze API, możesz umieścić funkcję RoutePrefix na kontrolerze API.

Na przykład chcemy, aby był w formacie takim: http://localhost/api/customers/1/orders


Zmodyfikuj OrdersController w ten sposób.


Możesz także użyć ~ w funkcji Route, aby nadpisać zasady prefiksu Action.



Prefiks zdefiniowany przez funkcję RoutePrefix może również zawierać zmienne parametrów:


Ograniczenia routingowe

Możesz ograniczać zmienne parametrów w trasie za pomocą "{parameter variable name: constraint}".


Powyżej, jeśli id zmiennej fragmentu jest typu int, jest kierowany do pierwszej Akcji, a jeśli nie, to do drugiej Akcji.

ASP.NET Wbudowane ograniczenia API webowego obejmują:

{x:alpha} ogranicza wielkie i małe litery
{x:bool}
{x:datetime}
{x:decimal}
{x:double}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} ogranicza zakres długości
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Możesz ustawić wiele ograniczeń dla zmiennej parametrów jednocześnie:

Zaimplementuj interfejs IHttpRouteConstraint do dostosowania reguł ograniczeń. Zaimplementuj ograniczenie, które nie może być 0.


Zarejestruj niestandardowe ograniczenie w WebApiConfig w folderze App_Start.


Używaj niestandardowych ograniczeń.


Parametry opcjonalne i ich wartości domyślne

Jeśli zmienna parametru routingu jest opcjonalna, parametr ten również musi otrzymać wartość domyślną.


Dodaj ? po ograniczeniu, aby wskazać opcjonalnie, i ustaw domyślną wartość id w parametrach metody.

Nadaj trasie nazwę



Priorytet trasowania

Priorytet trasy określony przez właściwość Route jest określany na podstawie konwencji oraz właściwości RouteOrder.

Konwencje są następujące:

1. Statyczne zmienne fragmentów
2. Zmienne fragmentacyjne z ograniczeniami
3. Zmienne fragmentacyjne bez ograniczeń
4. Zmienna fragmentów dziki z ograniczeniami
5. Nieograniczone zmienne fragmentów dzikich kart

Domyślna wartość właściwości RouteOrder wynosi 0, a im mniejsza wartość właściwości, tym wyższa.


Powyżej, kolejność priorytetu routingu jest następująca:

statyczna zmienna fragmentów orders/details, wartość właściwości RouteOrder wynosi 0
orders/{id} z ograniczonymi zmiennymi fragmentami o wartości 0 w właściwości RouteOrder
orders/{customerName} to zmienna fragmentaryczna bez ograniczeń, a wartość właściwości RouteOrder wynosi 0
orders/{*date} to zmienna fragmentów wildcard o wartości 0 w właściwości RouteOrder
zlecenia/oczekujące wartości właściwości RouteOrder 1






Poprzedni:Prowadź rejestr tego, co można zapłacić kartą kredytową
Następny:Nie mogąc udostępnić procesu dla ADO.NET o stałej nazwie "MySql.Data.MySqlClient"...
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com