|
|
Postitatud 28.04.2018 10:37:11
|
|
|
|

ASP.NET Veebi API marsruutimine on lihtsalt öeldes protsess, mille käigus kliendipäringud kaardistatakse vastavatele tegevustele. Artiklis "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" kogesin marsruutide seadistamist mallide, konventsioonide ja HTTP meetodite kaudu ning selle lähenemise eeliseks on see, et marsruutimismallid paigutatakse ühtlaselt WebApiConfig klassi App_Start kausta alla, mis on halduseks mugav, kuid puuduseks on see, et see pole piisavalt paindlik.
REST käsitleb kõike ressursina ning mõnikord võib alamressursside ressurss, nagu Klient ja Tellimused, soovida sisestada päringu nagu customers/1/orders, kuid seda on raske saavutada ainult kokkuleppe alusel. Tegelikult pakub ASP.NET Web API meile marsruudi funktsiooni, mida saab otse Actioniga ühendada ning mis on väga paindlik ja intuitiivne kasutada.
Vaatame, kuidas kasutada marsruudi funktsiooni ASP.NET MVC4-s.
Luba marsruudi atribuut
Esmalt pead selle WebApiConfig'is seadistama.
Ülaltoodud MapHttpAttributeRoutes meetod on saadaval ainult uuemates ASP.NET Web API versioonidesKui su versioon on suhteliselt madal, saad vana versiooni desinstallida ja paigaldada uusima versiooni NuGet Package Manager konsooli kaudu.
Järgmisena pead Global.asaxis kommenteerima WebApiConfig'i algset registreerimisviisi ja võtma kasutusele uue meetodi järgmiselt:
Sel hetkel võib projekti käivitamisel näidata järgmist viga:
See on sellepärast, et kui laadisin alla ASP.NET veebipõhise API uusima versiooni, laadisin alla ka icrosofti uusima versiooni. AspNet.WebApi.HelpPage。 Saad desinstallida HelpPage'i uusima versiooni ja laadida alla vanema versiooni.
Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force install-package Microsoft.AspNet.WebApi.HelpPage -pre
Kasuta Route omadust
Loo Cusomteri klass.
Loo Order klass.
Loo andmebaasiklass, et saada tellimuste kogumik.
Loo tühi API kontroller, mis on kirjutatud nii:
Sisesta oma brauserisse järgmine:
Kui kasutate arenduseks ASP.NET MVC4, võite programmi esmakordsel käivitamisel saada järgmise veateate:
[A] System.Web.WebPages.Razor.Configuration.HostSection ei saa edastada aadressile [B]System.Web.WebPages.Razor.Configuration.HostSection. Tüüp A on tuletatud "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (kontekstis "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ kontekstis "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Tüüp B on tuletatud "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (kontekstis "Default" "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Ajutised ASP.NET failid/vs/feb7ce97/a525d58a/asse
See on tingitud sellest, et Razori uusimat versiooni kasutatakse ASP.NET Web API uusima versiooni allalaadimisel. Pead seadistama järgmise konfiguratsiooni Web.config juurkataloogis:
Kasuta RoutePrefix funktsiooni
Kui soovid kõiki toiminguid API kontrolleris ette liita, võid panna RoutePrefix funktsiooni API kontrollerile.
Näiteks tahame, et see oleks sellises formaadis: http://localhost/api/customers/1/orders
Muuda OrdersControllerit nii.
Samuti võid kasutada ~ funktsioonis Marsruut, et tühistada Tegevuse eesliite reeglid.
RoutePrefix funktsiooni poolt määratletud prefiks võib sisaldada ka parameetrimuutujaid:
Marsruutimispiirangud
Sa saad marsruudil parameetrimuutujaid piirata sõnaga "{parameter variable name: constraint}".
Ülal, kui fragmendi muutuja id on tüüpi int, suunatakse see esimesele tegevusele ja kui mitte, suunatakse teise tegevuseni.
ASP.NET Web API sisseehitatud piirangud hõlmavad:
{x:alpha} piirab suurtähti ja väiketähti {x:bool} {x:datetime} {x:dekumaal} {x:double} {x:float} {x:guid} {x:int} {x:length(6)} {x:length(1,20)} piirab pikkusvahemikku {x:long} {x:maxlength(10)} {x:min(10)} {x:range(10,50)} {x:regex(regex)}
Parameetrimuutujale saab samaaegselt määrata mitu piirangut:
Rakenda IHttpRouteConstraint liidest, et piirangute reegleid kohandada. Rakenda piirang, mis ei saa olla 0.
Registreeri WebApiConfigis kohandatud piirang App_Start kaustas.
Kasuta kohandatud piiranguid.
Valikulised parameetrid ja nende vaikeväärtused
Kui marsruutimisparameetri muutuja on valikuline, tuleb sellele parameetrile anda ka vaikimisi väärtus.
Lisa ? pärast piirangut, et näidata valikulist, ja määra meetodi parameetrites vaikimisi väärtus id-le.
Sea marsruudile nimi
Marsruutimise prioriteet
Marsruudi omaduse poolt määratud marsruudi prioriteet määratakse konventsioonide ja RouteOrder omaduse põhjal.
Konventsioonid on:
1. Staatilised fragmendimuutujad 2. Fragmentmuutujad piirangutega 3. Fragmentmuutujad ilma piiranguteta 4. Wildcard fragment muutuja piirangutega 5. Piiranguteta wildcard fragment muutujad
RouteOrder omaduse vaikimisi väärtus on 0 ning mida väiksem omaduse väärtus, seda kõrgem see on.
Ülaltoodud marsruutimise prioriteedi järjekord on:
orders/details staatilise fragmendi muutuja, RouteOrder omaduse väärtus on 0 orders/{id} piiratud fragmentmuutujatega, mille väärtus on 0 RouteOrder omaduses orders/{customerName} on piiranguteta fragmentmuutuja ning RouteOrder omaduse väärtus on 0 orders/{*date} on wildcard fragment muutuja, mille väärtus on 0 RouteOrder omaduses tellimused/ootel MarsruutTellimuse omaduse väärtus 1
|
Eelmine:Hoia arvestust, mida krediitkaardiga saab makstaJärgmine:Ei õnnestunud pakkuda protsessi ADO.NET jaoks, millel on fikseeritud nimi "MySql.Data.MySqlClient"...
|