Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 21930|Svar: 1

[WebAPI] web api Ruteegenskabsdefinition

[Kopier link]
Opslået på 28/04/2018 10.37.11 | | | |
ASP.NET Web API-routing er ganske enkelt processen med at kortlægge klientanmodninger til tilsvarende handlinger. I artiklen "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" oplevede jeg at sætte ruter gennem skabeloner, konventioner og HTTP-metoder, og fordelen ved denne tilgang er, at routingskabelonerne er ensartet placeret i WebApiConfig-klassen under App_Start-mappen, hvilket er praktisk til administration, men ulempen er, at den ikke er fleksibel nok.


REST behandler alt som en ressource, og nogle gange kan en ressource med underordnede ressourcer, såsom Customer og Orders, ønske at indtaste en forespørgsel som customers/1/orders, men det er svært at opnå denne vej udelukkende ved konvention. Faktisk giver ASP.NET Web API os en Route-funktion, som kan forbindes direkte til Action, og som er meget fleksibel og intuitiv at bruge.

Lad os opleve, hvordan du bruger rutefunktionen i ASP.NET MVC4.

Tillad Route-attributten


Først skal du sætte det op i WebApiConfig.



Ovenstående MapHttpAttributeRoutes-metode er kun tilgængelig i nyere versioner af ASP.NET Web APIHvis din version er relativt lav, kan du afinstallere den gamle version og installere den nyeste version via NuGet Package Manager-konsollen.


Dernæst skal du i Global.aSax kommentere den oprindelige måde at registrere WebApiConfig på og anvende en ny metode, som følger:

På nuværende tidspunkt kan det rapportere følgende fejl, når projektet køres:

Det skyldes, at da jeg downloadede den nyeste version af ASP.NET Web API, downloadede jeg også den nyeste version af icrosoft. AspNet.WebApi.HelpPage。 Du kan afinstallere den nyeste version af HelpPage og downloade den ældre version.

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


Brug Route-egenskaben

Opret en Cusomter-klasse.


Opret en Order-klasse.

Opret en databaseklasse for at få Order-samlingen.



Opret en tom API-controller skrevet sådan her:


Indtast følgende i din browser:

Hvis du bruger ASP.NET MVC4 til udvikling, kan du få følgende fejl, når programmet køres første gang:

[A] System.Web.WebPages.Razor.Configuration.HostSection kan ikke kastes til [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A er afledt af "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 stammer 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/ Midlertidige ASP.NET Filer/vs/feb7ce97/a525d58a/asse


Dette skyldes, at den nyeste version af Razor bruges, når den nyeste version af ASP.NET Web API downloades. Du skal konfigurere følgende konfiguration i rodmappen af Web.config:


Brug RoutePrefix-funktionen


Hvis du vil præfikse alle handlinger i en API-controller, kan du lægge RoutePrefix-funktionen på API-controlleren.

For eksempel vil vi have det i et format som dette: http://localhost/api/customers/1/orders


Modificerer OrdersController på denne måde.


Du kan også bruge ~ i rutefunktionen til at tilsidesætte præfiksreglerne for handlingen.



Præfikset defineret af RoutePrefix-funktionen kan også have parametervariabler:


Routingbegrænsninger

Du kan begrænse parametervariabler i en rute ved at "{parametervariabelnavn: constraint}".


Ovenfor, hvis fragmentvariabelen id er af typen int, bliver den dirigeret til den første handling, og hvis ikke, bliver den sendt til den anden handling.

ASP.NET Web API's indbyggede begrænsninger inkluderer:

{x:alpha} begrænser store og små bogstaver
{x:bool}
{x:datetime}
{x:decimal}
{x:double}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} begrænser længdeintervallet
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Du kan sætte flere begrænsninger for en parametervariabel på samme tid:

Implementér IHttpRouteConstraint-grænsefladen for at tilpasse begrænsningerne. Implementér en begrænsning, der ikke kan være 0.


Registrer en brugerdefineret begrænsning i WebApiConfig i mappen App_Start.


Brug brugerdefinerede begrænsninger.


Valgfrie parametre og deres standardværdier

Hvis en routingparametervariabel er valgfri, skal parameteren også have en standardværdi.


Tilføj ? efter begrænsningen for at angive valgfri, og sæt standardværdien for id i metodeparametrene.

Sæt et navn til ruten



Routingprioritet

Ruteprioriteten, der fastsættes af Route-egenskaben, bestemmes ud fra konventioner og RouteOrder-egenskaben.

Konventionerne er:

1. Statiske fragmentvariabler
2. Fragmentvariabler med begrænsninger
3. Fragmentvariabler uden begrænsninger
4. Joker-fragmentvariabel med begrænsninger
5. Ubegrænsede wildcard-fragmentvariabler

Standardværdien for RouteOrder-egenskaben er 0, og jo mindre egenskabsværdien er, desto højere er den.


Ovenfor er prioritetsrækkefølgen for routing:

ordrer/detaljer statisk fragmentvariabel, værdien af RouteOrder-egenskaben er 0
orders/{id} med begrænsede fragmentvariabler med værdien 0 i RouteOrder-egenskaben
orders/{customerName} er en fragmentvariabel uden begrænsninger, og værdien af RouteOrder-egenskaben er 0
orders/{*date} er en wildcard-fragmentvariabel med værdien 0 i RouteOrder-egenskaben
ordrer/ventende RouteOrder-ejendomsværdi på 1






Tidligere:Før regnskab over, hvad der kan betales med kreditkort
Næste:Kan ikke levere en proces for en ADO.NET med det faste navn "MySql.Data.MySqlClient"...
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com