Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 21930|Svare: 1

[WebAPI] web-API Ruteegenskapsdefinisjon

[Kopier lenke]
Publisert på 28.04.2018 10:37:11 | | | |
ASP.NET Web API-ruting er enkelt sagt prosessen med å kartlegge klientforespørsler til tilsvarende handlinger. I artikkelen "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" opplevde jeg å sette ruter gjennom maler, konvensjoner og HTTP-metoder, og fordelen med denne tilnærmingen er at rutingmalene er jevnt plassert i WebApiConfig-klassen under App_Start-mappen, noe som er praktisk for administrasjon, men ulempen er at den ikke er fleksibel nok.


REST behandler alt som en ressurs, og noen ganger kan en ressurs med barneressurser, som Customer og Orders, ønske å legge inn en forespørsel som customers/1/orders, men det er vanskelig å oppnå denne veien kun ved konvensjon. Faktisk gir ASP.NET Web API oss en Route-funksjon, som kan kobles direkte til Action, og som er veldig fleksibel og intuitiv å bruke.

La oss oppleve hvordan du bruker rutefunksjonen i ASP.NET MVC4.

Tillat Route-attributtet


Først må du sette det opp i WebApiConfig.



Metoden MapHttpAttributeRoutes ovenfor er kun tilgjengelig i nyere versjoner av ASP.NET Web APIHvis versjonen din er relativt lav, kan du avinstallere den gamle versjonen og installere den nyeste versjonen via NuGet Package Manager-konsollen.


Deretter, i Global.asax, må du kommentere den opprinnelige måten å registrere WebApiConfig på og ta i bruk en ny metode, som følger:

På dette tidspunktet kan kjøring av prosjektet rapportere følgende feil:

Dette er fordi da jeg lastet ned den nyeste versjonen av ASP.NET Web API, lastet jeg også ned den nyeste versjonen av icrosoft. AspNet.WebApi.HelpPage。 Du kan avinstallere den nyeste versjonen av HelpPage og laste ned den eldre versjonen.

Uninstall-Package Microsoft.AspNet.WebApi.HelpPage –Force
Install-Package Microsoft.AspNet.WebApi.HelpPage -Pre


Bruk Rute-egenskapen

Lag en Cusomter-klasse.


Lag en Order-klasse.

Opprett en databaseklasse for å hente Order-samlingen.



Lag en tom API-kontroller skrevet slik:


Skriv følgende i nettleseren din:

Hvis du bruker ASP.NET MVC4 til utvikling, kan du få følgende feil når programmet kjøres for første gang:

[A] System.Web.WebPages.Razor.Configuration.HostSection kan ikke kastes til [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A er avledet fra "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (i "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ i konteksten "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Type B er avledet fra "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (i kontekst "Default" i "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Midlertidig ASP.NET Filer/vs/feb7ce97/a525d58a/asse


Dette skyldes at den nyeste versjonen av Razor brukes når man laster ned den nyeste versjonen av ASP.NET Web API. Du må konfigurere følgende konfigurasjon i rotkatalogen til Web.config:


Bruk RoutePrefix-funksjonen


Hvis du vil prefikse alle handlinger i en API-kontroller, kan du legge RoutePrefix-funksjonen på API-kontrolleren.

For eksempel ønsker vi at det skal være i et format som dette: http://localhost/api/customers/1/orders


Endre OrdersController på denne måten.


Du kan også bruke ~ i rutefunksjonen for å overstyre prefiksreglene i handlingen.



Prefikset definert av RoutePrefix-funksjonen kan også ha parametervariabler:


Rutingsbegrensninger

Du kan begrense parametervariabler i en rute ved å bruke "{parametervariabelnavn: constraint}".


Ovenfor, hvis fragmentvariabelen id er av typen int, rutes den til den første handlingen, og hvis ikke, rutes den til den andre handlingen.

ASP.NET innebygde begrensninger i Web API inkluderer:

{x:alpha} begrenser store og små bokstaver
{x:bool}
{x:datetime}
{x:desimal}
{x:double}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} begrenser lengdeområdet
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Du kan sette flere begrensninger for en parametervariabel samtidig:

Implementer grensesnittet IHttpRouteConstraint for å tilpasse begrensningsreglene. Implementer en begrensning som ikke kan være 0.


Registrer en egendefinert begrensning i WebApiConfig i App_Start-mappen.


Bruk egendefinerte begrensninger.


Valgfrie parametere og deres standardverdier

Hvis en routingparametervariabel er valgfri, må parameteren også få en standardverdi.


Legg til ? etter begrensningen for å indikere valgfritt, og sett standardverdien for id i metodeparametrene.

Sett et navn på ruten



Rutingsprioritet

Ruteprioriteten satt av Route-egenskapen bestemmes basert på konvensjoner og RouteOrder-egenskapen.

Konvensjonene er:

1. Statiske fragmentvariabler
2. Fragmentvariabler med begrensninger
3. Fragmentvariabler uten begrensninger
4. Jokerfragmentvariabel med begrensninger
5. Ubegrensede wildcard-fragmentvariabler

Standardverdien til RouteOrder-egenskapen er 0, og jo mindre egenskapsverdien, desto høyere er den.


Ovenfor er prioriteringsrekkefølgen for ruting:

ordrer/detaljer statisk fragmentvariabel, verdien av RouteOrder-egenskapen er 0
orders/{id} med begrensede fragmentvariabler med verdien 0 i RouteOrder-egenskapen
orders/{customerName} er en fragmentvariabel uten begrensninger, og verdien av RouteOrder-egenskapen er 0
orders/{*date} er en joker-fragmentvariabel med verdien 0 i RouteOrder-egenskapen
ordrer/ventende RouteOrder-egenskapsverdi på 1






Foregående:Før oversikt over hva som kan betales med kredittkort
Neste:Kan ikke levere en prosess for en ADO.NET med det faste navnet "MySql.Data.MySqlClient"...
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com