ASP.NET Web API maršrutēšana, vienkārši sakot, ir klienta pieprasījumu kartēšanas process uz atbilstošajām darbībām. Rakstā "ASP.NET Web API prakses sērija 03, maršrutēšanas veidnes, maršrutēšanas konvencijas, maršrutēšanas iestatījumi" es piedzīvoju maršrutu iestatīšanu, izmantojot veidnes, konvencijas un HTTP metodes, un šīs pieejas priekšrocība ir tā, ka maršrutēšanas veidnes ir vienmērīgi novietotas WebApiConfig klasē zem mapes App_Start, kas ir ērti pārvaldībai, bet trūkums ir tas, ka tas nav pietiekami elastīgs.
REST visu uzskata par resursu, un dažreiz resurss ar pakārtotiem resursiem, piemēram, Klients un pasūtījumi, var vēlēties ievadīt pieprasījumu, piemēram, klienti/1/pasūtījumi, taču šo maršrutu ir grūti sasniegt tikai pēc konvencijas. Patiesībā ASP.NET Web API nodrošina mums maršruta funkciju, kuru var tieši savienot ar darbību, kas ir ļoti elastīga un intuitīvi lietojama.
Izbaudīsim, kā izmantot maršruta funkciju ASP.NET MVC4.
Atribūta Maršruts atļaušana
Vispirms tas ir jāiestata WebApiConfig.
Iepriekš minētā metode MapHttpAttributeRoutes ir pieejama tikai jaunākās ASP.NET Web API versijāsJa jūsu versija ir salīdzinoši zema, varat atinstalēt veco versiju un instalēt jaunāko versiju, izmantojot NuGet Package Manager konsoli.
Pēc tam Global.asax jums ir jākomentē sākotnējais WebApiConfig reģistrācijas veids un jāpieņem jauna metode:
Šajā laikā, palaižot projektu, var tikt ziņots par šādu kļūdu:
Tas ir tāpēc, ka, lejupielādējot jaunāko ASP.NET Web API versiju, es lejupielādēju arī jaunāko icrosoft versiju. AspNet.WebApi.HelpPage。 Varat atinstalēt jaunāko HelpPage versiju un lejupielādēt vecāko versiju.
Atinstalējiet pakotni Microsoft.AspNet.WebApi.HelpPage –Force Instalēšanas pakotne Microsoft.AspNet.WebApi.HelpPage -Pre
Rekvizīta Maršruts izmantošana
Izveidojiet Cusomter klasi.
Izveidojiet pasūtījuma klasi.
Izveidojiet datu bāzes klasi, lai iegūtu pasūtījumu kolekciju.
Izveidojiet tukšu API kontrolieri, kas rakstīts šādi:
Pārlūkprogrammā ierakstiet:
Ja izmantojat ASP.NET MVC4 izstrādei, pirmo reizi palaižot programmu, var tikt parādīts šāds kļūdas ziņojums:
[A] System.Web.WebPages.Razor.Configuration.HostSection nevar pārraidīt uz [B]System.Web.WebPages.Razor.Configuration.HostSection. A tips ir atvasināts no "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (sadaļā "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ kontekstā "Noklusējums") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). B tips ir atvasināts no "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (kontekstā "Noklusējums" sadaļā "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Pagaidu ASP.NET faili / vs / feb7ce97 / a525d58a / asse
Tas ir tāpēc, ka, lejupielādējot jaunāko ASP.NET Web API versiju, tiek izmantota jaunākā Razor versija. Web.config saknes direktorijā ir jākonfigurē šāda konfigurācija:
Funkcijas RoutePrefix izmantošana
Ja vēlaties prefiksu visām darbībām API kontrollerī, varat ievietot līdzekli RoutePrefix API kontrollerī.
Piemēram, mēs vēlamies, lai tas būtu šādā formātā: http://localhost/api/customers/1/orders
Šādā veidā modificējiet OrdersController.
Varat arī izmantot ~ maršruta līdzeklī, lai ignorētu darbības prefiksa kārtulas.
Prefiksam, ko definē līdzeklis RoutePrefix, var būt arī parametru mainīgie:
Maršrutēšanas ierobežojumi
Jūs varat ierobežot parametru mainīgos maršrutā ar "{parameter variable name: constraint}".
Iepriekš, ja fragmenta mainīgais id ir int tipa, tas tiek maršrutēts uz pirmo darbību, un, ja nē, tas tiek novirzīts uz otro darbību.
ASP.NET Web API iebūvētie ierobežojumi ietver:
{x:alpha} ierobežo lielos un mazos burtus {x:bool} {x:datetime} {x:decimāldaļa} {x:dubultā} {x:pludiņš} {x:guid} {x:int} {x:garums(6)} {x:length(1,20)} ierobežo garuma diapazonu {x:garš} {x:maksimālais garums(10)} {x:min(10)} {x:diapazons(10,50)} {x:regex(regex)}
Parametra mainīgajam var iestatīt vairākus ierobežojumus vienlaikus:
Ieviesiet IHttpRouteConstraint interfeisu, lai pielāgotu ierobežojumu kārtulas. Ieviesiet ierobežojumu, kas nevar būt 0.
Reģistrējiet pielāgotu ierobežojumu WebApiConfig mapē App_Start.
Izmantojiet pielāgotus ierobežojumus.
Fakultatīvie parametri un to noklusējuma vērtības
Ja maršrutēšanas parametra mainīgais nav obligāts, parametram ir jāpiešķir arī noklusējuma vērtība.
Pievienojiet ? pēc ierobežojuma, lai norādītu neobligāti, un metodes parametros iestatiet id noklusējuma vērtību.
Maršruta nosaukuma iestatīšana
Maršrutēšanas prioritāte
Rekvizīta Route iestatītā maršruta prioritāte tiek noteikta, pamatojoties uz konvencijām un rekvizītu RouteOrder.
Konvencijas ir šādas:
1. Statiskie fragmentu mainīgie lielumi 2. Fragmentējiet mainīgos ar ierobežojumiem 3. Fragmentējiet mainīgos bez ierobežojumiem 4. Aizstājējzīmju fragmenta mainīgais ar ierobežojumiem 5. Neierobežoti aizstājējzīmju fragmentu mainīgie
Rekvizīta RouteOrder noklusējuma vērtība ir 0, un, jo mazāka rekvizīta vērtība, jo lielāka tā ir.
Iepriekš maršrutēšanas prioritātes secība ir šāda:
orders/details statiskā fragmenta mainīgais, rekvizīta RouteOrder vērtība ir 0 orders/{id} ar ierobežotiem fragmentu mainīgajiem ar vērtību 0 rekvizītā RouteOrder orders/{customerName} ir fragmenta mainīgais bez ierobežojumiem, un rekvizīta RouteOrder vērtība ir 0 orders/{*date} ir aizstājējzīmju fragmenta mainīgais ar vērtību 0 rekvizītā RouteOrder pasūtījumi/gaidāmā RouteOrder rekvizīta vērtība 1
|