Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 21930|Antwoord: 1

[WebAPI] Web API Route property definitie

[Link kopiëren]
Geplaatst op 28-04-2018 10:37:11 | | | |
ASP.NET Web API-routering is simpel gezegd het proces waarbij clientverzoeken worden gekoppeld aan de bijbehorende Acties. In het artikel "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" heb ik ervaring met het instellen van routes via sjablonen, conventies en HTTP-methoden, en het voordeel van deze aanpak is dat de routeringstemplates uniform in de WebApiConfig-klasse onder de App_Start-map worden geplaatst, wat handig is voor beheer, maar het nadeel is dat het niet flexibel genoeg is.


REST behandelt alles als een bron, en soms wil een resource met kindresources, zoals Customer en Orders, een verzoek invoeren zoals customers/1/orders, maar het is moeilijk om deze route alleen door conventie te bereiken. In feite biedt ASP.NET Web API ons een Route-functie, die direct aan Action gekoppeld kan worden, wat zeer flexibel en intuïtief in gebruik is.

Laten we ervaren hoe je de Route-functie in ASP.NET MVC4 gebruikt.

Sta het Route-attribuut toe


Eerst moet je het opzetten in WebApiConfig.



De bovenstaande MapHttpAttributeRoutes-methode is alleen beschikbaar in nieuwere versies van ASP.NET Web APIAls je versie relatief laag is, kun je de oude versie verwijderen en de nieuwste versie installeren via de NuGet Package Manager-console.


Vervolgens moet je in Global.asak de oorspronkelijke manier van WebApiConfig registreren en een nieuwe methode adopteren, als volgt:

Op dit moment kan het uitvoeren van het project de volgende fout rapporteren:

Dit komt doordat ik bij het downloaden van de nieuwste versie van ASP.NET Web API ook de nieuwste versie van icrosoft heb gedownload. AspNet.WebApi.HelpPage。 Je kunt de nieuwste versie van HelpPage verwijderen en de oudere versie downloaden.

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


Gebruik de eigenschap Route.

Maak een Cusomter-klasse.


Maak een Order-klasse aan.

Maak een databaseklasse aan om de Order-collectie te verkrijgen.



Maak een lege API-controller aan die als volgt is geschreven:


Typ het volgende in je browser:

Als je ASP.NET MVC4 gebruikt voor ontwikkeling, kun je de volgende foutmelding krijgen wanneer het programma voor het eerst wordt uitgevoerd:

[A] System.Web.WebPages.Razor.Configuration.HostSection kan niet worden gecast naar [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A is afgeleid van "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (in "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ in de context "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Type B is afgeleid van "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (in context "Default" in "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Tijdelijke ASP.NET Bestanden/vs/feb7ce97/a525d58a/asse


Dit komt doordat de nieuwste versie van Razor wordt gebruikt bij het downloaden van de nieuwste versie van de ASP.NET Web API. Je moet de volgende configuratie configureren in de rootmap van Web.config:


Gebruik de RoutePrefix-functie


Als je alle acties wilt prefixen in een API-controller, kun je de RoutePrefix-functie op de API-controller zetten.

We willen bijvoorbeeld dat het in een formaat als volgt is: http://localhost/api/customers/1/orders


Pas de OrdersController op deze manier aan.


Je kunt ook ~ in de Route-functie gebruiken om de prefixregels van de Actie te overschrijven.



Het prefix dat door de RoutePrefix-functie wordt gedefinieerd, kan ook parametervariabelen bevatten:


Routingbeperkingen

Je kunt parametervariabelen in een route beperken door "{parameter variabele naam: constraint}".


Boven, als de fragmentvariabele id van het type int is, wordt deze doorgestuurd naar de eerste Actie, en als dat niet zo is, wordt deze naar de tweede Actie gestuurd.

ASP.NET ingebouwde beperkingen van de Web API omvatten:

{x:alpha} beperkt hoofd- en kleine letters
{x:bool}
{x:datetime}
{x:decimaal}
{x:double}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} beperkt het lengtebereik
{x:lang}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Je kunt meerdere beperkingen tegelijk instellen voor een parametervariabele:

Implementeer de IHttpRouteConstraint-interface om de constraintregels aan te passen. Implementeer een constraint die niet 0 kan zijn.


Registreer een aangepaste constraint in WebApiConfig in de map App_Start.


Gebruik aangepaste beperkingen.


Optionele parameters en hun standaardwaarden

Als een routeringsparametervariabele optioneel is, moet de parameter ook een standaardwaarde krijgen.


Voeg ? toe na de beperking om optioneel aan te geven, en stel de standaardwaarde voor id in de methodeparameters.

Stel een naam voor de route vast



Routingprioriteit

De routeprioriteit die door de Route-eigenschap wordt ingesteld, wordt bepaald op basis van conventies en de RouteOrder-eigenschap.

De conventies zijn:

1. Statische fragmentvariabelen
2. Fragmentvariabelen met beperkingen
3. Fragmentvariabelen zonder beperkingen
4. Jokerfragmentvariabele met beperkingen
5. Onbeperkte wildcardfragmentvariabelen

De standaardwaarde van de RouteOrder-eigenschap is 0, en hoe kleiner de eigenschapswaarde, hoe hoger deze is.


Hierboven is de volgorde van prioriteit voor routering:

orders/details statische fragmentvariabele, de waarde van de RouteOrder-eigenschap is 0
orders/{id} met beperkte fragmentvariabelen met een waarde van 0 in de eigenschap RouteOrder
orders/{customerName} is een fragmentvariabele zonder beperkingen, en de waarde van de eigenschap RouteOrder is 0
orders/{*date} is een wildcard-fragmentvariabele met een waarde van 0 in de eigenschap RouteOrder
orders/in afwachting RouteOrder-eigendomswaarde van 1






Vorig:Houd een overzicht bij van wat er met een creditcard betaald kan worden
Volgend:Kan geen proces leveren voor een ADO.NET met de vaste naam "MySql.Data.MySqlClient"...
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com