ASP.NET žiniatinklio API maršrutizavimas, paprasčiau tariant, yra kliento užklausų susiejimo su atitinkamais veiksmais procesas. Straipsnyje "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" patyriau maršrutų nustatymą per šablonus, konvencijas ir HTTP metodus, o šio metodo privalumas yra tas, kad maršruto parinkimo šablonai yra vienodai išdėstyti WebApiConfig klasėje po App_Start aplanku, kuris yra patogus valdyti, tačiau trūkumas yra tas, kad jis nėra pakankamai lankstus.
REST viską traktuoja kaip išteklius, o kartais išteklius su antriniais ištekliais, pvz., Klientas ir Užsakymai, gali norėti įvesti užklausą, pvz., klientai/1/užsakymai, tačiau šį maršrutą sunku pasiekti vien pagal susitarimą. Tiesą sakant, ASP.NET žiniatinklio API suteikia mums maršruto funkciją, kurią galima tiesiogiai prijungti prie veiksmo, kuri yra labai lanksti ir intuityvi naudoti.
Pažiūrėkime, kaip naudoti maršruto funkciją ASP.NET MVC4.
Leisti atributą Maršrutas
Pirmiausia turite jį nustatyti "WebApiConfig".
Aukščiau pateiktas metodas MapHttpAttributeRoutes galimas tik naujesnėse ASP.NET žiniatinklio API versijoseJei jūsų versija yra palyginti maža, galite pašalinti seną versiją ir įdiegti naujausią versiją naudodami "NuGet Package Manager" konsolę.
Tada "Global.asax" turite pakomentuoti originalų "WebApiConfig" registravimo būdą ir pritaikyti naują metodą:
Šiuo metu vykdant projektą gali būti pranešta apie šią klaidą:
Taip yra todėl, kad atsisiųsdamas naujausią ASP.NET žiniatinklio API versiją taip pat atsisiunčiau naujausią "icrosoft" versiją. AspNet.WebApi.HelpPage。 Galite pašalinti naujausią "HelpPage" versiją ir atsisiųsti senesnę versiją.
Pašalinkite paketą Microsoft.AspNet.WebApi.HelpPage –Force Įdiegti paketą Microsoft.AspNet.WebApi.HelpPage -Pre
Naudoti ypatybę Maršrutas
Sukurkite Cusomter klasę.
Sukurkite užsakymo klasę.
Sukurkite duomenų bazės klasę, kad gautumėte užsakymų rinkinį.
Sukurkite tuščią API valdiklį, parašytą taip:
Naršyklėje įveskite:
Jei naudojate ASP.NET MVC4 kūrimui, pirmą kartą paleidę programą galite gauti šią klaidą:
[A] System.Web.WebPages.Razor.Configuration.HostSection negalima perduoti į [B]System.Web.WebPages.Razor.Configuration.HostSection. A tipas gaunamas iš "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" ("C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ kontekste "Numatytasis") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). B tipas gaunamas iš "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (kontekste "Default" "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Laikinas ASP.NET Failai/vs/feb7ce97/a525d58a/asse
Taip yra todėl, kad atsisiunčiant naujausią "ASP.NET Web API" versiją naudojama naujausia "Razor" versija. Web.config šakniniame kataloge turite sukonfigūruoti šią konfigūraciją:
Naudokite funkciją RoutePrefix
Jei norite nustatyti visų API valdiklio veiksmų priešdėlį, galite įdėti RoutePrefix funkciją į API valdiklį.
Pavyzdžiui, norime, kad jis būtų tokio formato: http://localhost/api/customers/1/orders
Tokiu būdu modifikuokite OrdersController.
Taip pat galite naudoti ~ maršruto funkcijoje, kad nepaisytumėte veiksmo priešdėlio taisyklių.
Funkcijos RoutePrefix apibrėžtas priešdėlis taip pat gali turėti parametrų kintamuosius:
Maršruto parinkimo apribojimai
Galite apriboti parametrų kintamuosius maršrute naudodami "{parameter variable name: constraint}".
Aukščiau, jei fragmento kintamojo id yra int tipo, jis nukreipiamas į pirmąjį veiksmą, o jei ne, jis nukreipiamas į antrąjį veiksmą.
ASP.NET žiniatinklio API įtaisytieji apribojimai apima:
{x:alpha} apriboja didžiąsias ir mažąsias raides {x:bool} {x:datetime} {x:dešimtainis} {x:dvigubas} {x:plūduriuojantis} {x:guid} {x:int} {x:ilgis(6)} {x:length(1,20)} apriboja ilgio diapazoną {x:ilgas} {x:maxlength(10)} {x:min(10)} {x:diapazonas(10,50)} {x:regex(regex)}
Vienu metu galite nustatyti kelis parametro kintamojo apribojimus:
Įdiekite IHttpRouteConstraint sąsają, kad tinkintumėte apribojimų taisykles. Įdiekite apribojimą, kuris negali būti 0.
Užregistruokite pasirinktinį apribojimą WebApiConfig aplanke App_Start.
Naudokite pasirinktinius apribojimus.
Neprivalomi parametrai ir jų numatytosios vertės
Jei maršruto parinkimo parametro kintamasis yra pasirinktinis, parametrui taip pat turi būti suteikta numatytoji reikšmė.
Pridėti ? po apribojimo, kad nurodytumėte pasirinktinai, ir metodo parametruose nustatykite numatytąją id reikšmę.
Maršruto pavadinimo nustatymas
Maršruto parinkimo prioritetas
Maršruto prioritetas, nustatytas ypatybės Route, nustatomas pagal konvencijas ir ypatybę RouteOrder.
Konvencijos yra šios:
1. Statiniai fragmentų kintamieji 2. Fragmentuokite kintamuosius su apribojimais 3. Fragmentuokite kintamuosius be apribojimų 4. Pakaitos simbolių fragmento kintamasis su apribojimais 5. Nevaržomi pakaitos simbolių fragmentų kintamieji
Numatytoji ypatybės RouteOrder reikšmė yra 0, o kuo mažesnė ypatybės reikšmė, tuo ji didesnė.
Aukščiau nurodyta maršruto parinkimo prioriteto tvarka yra tokia:
orders/details statinio fragmento kintamasis, ypatybės RouteOrder reikšmė yra 0 orders/{id} su apribotais fragmentų kintamaisiais, kurių reikšmė ypatybėje RouteOrder yra 0 orders/{customerName} yra fragmento kintamasis be apribojimų, o ypatybės RouteOrder reikšmė yra 0 orders/{*date} yra pakaitos simbolio fragmento kintamasis, kurio reikšmė ypatybėje RouteOrder yra 0 užsakymų/laukiančių RouteOrder ypatybės reikšmė 1
|