Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 21930|Atsakyti: 1

[WebAPI] žiniatinklio API Maršruto ypatybės apibrėžimas

[Kopijuoti nuorodą]
Paskelbta 2018-04-28 10:37:11 | | | |
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






Ankstesnis:Įrašykite tai, ką galima sumokėti kredito kortele
Kitą:Neįmanoma pateikti ADO.NET su fiksuotu pavadinimu "MySql.Data.MySqlClient" proceso...
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com