|
|
Julkaistu 28.4.2018 10.37.11
|
|
|
|

ASP.NET Web API:n reititys on yksinkertaisesti prosessi, jossa asiakaspyynnöt yhdistetään vastaaviin toimintoihin. Artikkelissa "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" koin reittien asettamisesta mallipohjan, konventioiden ja HTTP-metodien kautta, ja tämän lähestymistavan etuna on, että reitityspohjat sijoitetaan yhtenäisesti WebApiConfig-luokkaan App_Start-kansion alle, mikä on kätevää hallintaan, mutta haittapuolena on, ettei reititys ole tarpeeksi joustava.
REST käsittelee kaikkea resurssina, ja joskus resurssi, jossa on lapsiresursseja, kuten Asiakas ja Tilaukset, saattaa haluta syöttää pyynnön kuten customers/1/orders, mutta tätä reittiä on vaikea saavuttaa pelkän käytännön perusteella. Itse asiassa ASP.NET Web API tarjoaa meille Route-ominaisuuden, joka voidaan yhdistää suoraan Actioniin, ja se on erittäin joustava ja intuitiivinen käyttää.
Kokeillaan, miten Route-ominaisuutta käytetään ASP.NET MVC4:ssä.
Salli Route-attribuutti
Ensin sinun täytyy asentaa se WebApiConfigiin.
Yllä oleva MapHttpAttributeRoutes-menetelmä on saatavilla vain uudemmissa ASP.NET Web API:n versioissaJos versiosi on suhteellisen matala, voit poistaa vanhan version ja asentaa uusimman version NuGet Package Manager -konsolin kautta.
Seuraavaksi Global.asaxissa sinun täytyy kommentoida WebApiConfigin alkuperäinen rekisteröintitapa ja ottaa käyttöön uusi metodi, seuraavasti:
Tällä hetkellä projektin suorittaminen voi raportoida seuraavan virheen:
Tämä johtuu siitä, että kun latasin ASP.NET Web APIn uusimman version, latasin myös uusimman icrosoftin version. AspNet.WebApi.HelpPage。 Voit poistaa HelpPagen uusimman version ja ladata vanhemman version.
Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force Install-Package Microsoft.AspNet.WebApi.HelpPage -pre
Käytä Route-ominaisuutta
Luo Cusomter-luokka.
Luo Order-luokka.
Luo tietokantaluokka saadaksesi Order-kokoelman.
Luo tyhjä API-ohjain kirjoitettuna näin:
Kirjoita selaimessasi seuraava:
Jos käytät ASP.NET MVC4:ää kehitykseen, saatat saada seuraavan virheen, kun ohjelma ajetaan ensimmäistä kertaa:
[A] System.Web.WebPages.Razor.Configuration.HostSection ei voi lähettää osoitteeseen [B]System.Web.WebPages.Razor.Configuration.HostSection. Tyyppi A on johdettu sanoista "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (kohdassa "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ kontekstissa "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Tyyppi B on johdettu "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (kontekstissa "Default" muodossa "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Väliaikaiset ASP.NET-tiedostot/vs/feb7ce97/a525d58a/asse
Tämä johtuu siitä, että Razorin uusinta versiota käytetään latattaessa uusinta ASP.NET Web API:n versiota. Sinun täytyy konfiguroida seuraava asetus Web.configin juurihakemistossa:
Käytä RoutePrefix-ominaisuutta
Jos haluat etuliittää kaikki toiminnot API-ohjaimessa, voit laittaa RoutePrefix-ominaisuuden API-ohjaimelle.
Esimerkiksi haluamme sen olevan tällaisessa muodossa: http://localhost/api/customers/1/orders
Muokkaa OrdersControlleria tällä tavalla.
Voit myös käyttää ~ Reitti-ominaisuudessa ohittaaksesi Toiminnon etuliitesäännöt.
RoutePrefix-ominaisuuden määrittelemä etuliite voi myös sisältää parametrimuuttujia:
Reititysrajoitteet
Voit rajoittaa parametrimuuttujia reitillä sanomalla "{parameter variable name: constraint}".
Yllä, jos fragmenttimuuttuja id on tyyppiä int, se reititetään ensimmäiselle Toiminnolle, ja jos ei, se reititetään toiselle Toiminnolle.
ASP.NET Web API:n sisäänrakennetut rajoitteet sisältävät:
{x:alpha} rajoittaa isot ja pienet kirjaimet {x:bool} {x:datetime} {x:desimaali} {x:double} {x:float} {x:guid} {x:int} {x:length(6)} {x:length(1,20)} rajoittaa pituusalueen {x:long} {x:maxlength(10)} {x:min(10)} {x:range(10,50)} {x:regex(regex)}
Voit asettaa useita rajoitteita yhdelle parametrimuuttujalle samanaikaisesti:
Toteuta IHttpRouteConstraint-rajapinta rajoitussääntöjen mukauttamiseksi. Toteuta rajoite, joka ei voi olla 0.
Rekisteröi mukautettu rajoite WebApiConfigiin App_Start-kansioon.
Käytä omia rajoituksia.
Valinnaiset parametrit ja niiden oletusarvot
Jos reititysparametrin muuttuja on valinnainen, sille on myös annettava oletusarvo.
Lisää ? rajoitteen jälkeen ilmaistaksesi valinnaisen, ja aseta oletusarvo id:lle metodin parametreissa.
Aseta reitille nimi
Reititysprioriteetti
Route-ominaisuuden asettama reittiprioriteetti määräytyy konventioiden ja RouteOrder-ominaisuuden perusteella.
Tapahtumat ovat:
1. Staattiset fragmenttimuuttujat 2. Fragmenttimuuttujat rajoitteineen 3. Fragmenttimuuttujat ilman rajoitteita 4. Villikorttifragmenttimuuttuja rajoitteineen 5. Rajoittamattomat villikorttifragmenttimuuttujat
RouteOrder-ominaisuuden oletusarvo on 0, ja mitä pienempi ominaisuusarvo, sitä suurempi se on.
Yllä reitityksen prioriteettijärjestys on:
orders/details staattinen fragmenttimuuttuja, RouteOrder-ominaisuuden arvo on 0 orders/{id}, jossa on rajoitetut fragmenttimuuttujat, joiden arvo on 0 RouteOrder-ominaisuudessa orders/{customerName} on fragmenttimuuttuja ilman rajoitteita, ja RouteOrder-ominaisuuden arvo on 0 orders/{*date} on villikorttifragmenttimuuttuja, jonka arvo on 0 RouteOrder-ominaisuudessa tilaukset/odottavat ReittiTilaus-ominaisuuden arvo 1
|
Edellinen:Pidä kirjaa siitä, mitä luottokortilla voi maksaaSeuraava:En pysty toimittamaan prosessia ADO.NET:lle, jonka kiinteä nimi on "MySql.Data.MySqlClient"...
|