Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 21930|Risposta: 1

[WebAPI] Definizione della proprietà di rotta dell'API web

[Copiato link]
Pubblicato su 28/04/2018 10:37:11 | | | |
ASP.NET routing delle Web API, in parole semplici, è il processo di mappare le richieste dei client alle corrispondenti Azioni. Nell'articolo "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings", ho sperimentato l'impostazione di route tramite template, convenzioni e metodi HTTP, e il vantaggio di questo approccio è che i template di routing sono posizionati uniformemente nella classe WebApiConfig sotto la cartella App_Start, il che è comodo per la gestione, ma lo svantaggio è che non è abbastanza flessibile.


REST tratta tutto come una risorsa, e a volte una risorsa con risorse figlie, come Customer e Orders, può voler inserire una richiesta come customers/1/orders, ma è difficile ottenere questa strada solo per convenzione. Infatti, ASP.NET API Web ci offre una funzione Route, che può essere collegata direttamente ad Action, molto flessibile e intuitiva da usare.

Vediamo come usare la funzione Route in ASP.NET MVC4.

Consenti l'attributo Route


Prima devi configurarlo in WebApiConfig.



Il metodo MapHttpAttributeRoutes sopra descritto è disponibile solo nelle versioni più recenti della Web API ASP.NETSe la tua versione è relativamente bassa, puoi disinstallare la vecchia versione e installare l'ultima versione tramite la console NuGet Package Manager.


Successivamente, in Global.asax, devi commentare il modo originale di registrare WebApiConfig e adottare un nuovo metodo, come segue:

Al momento, l'esecuzione del progetto può segnalare il seguente errore:

Questo perché, scaricando l'ultima versione della ASP.NET Web API, ho anche scaricato l'ultima versione di icrosoft. AspNet.WebApi.HelpPage。 Puoi disinstallare l'ultima versione di HelpPage e scaricare la versione precedente.

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


Usa la proprietà Route

Crea una classe Cusomter.


Crea una classe Ordine.

Crea una classe Database per ottenere la collezione degli Ordini.



Crea un controller API vuoto scritto così:


Digita quanto segue nel tuo browser:

Se stai usando ASP.NET MVC4 per lo sviluppo, potresti ricevere il seguente errore quando il programma viene eseguito per la prima volta:

[A] System.Web.WebPages.Razor.Configuration.HostSection non può essere trasmesso a [B]System.Web.WebPages.Razor.Configuration.HostSection. Il Tipo A deriva da "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (in "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ nel contesto "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Il Tipo B deriva da "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (nel contesto "Default" in "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ File temporanei ASP.NET/vs/feb7ce97/a525d58a/asse


Questo perché l'ultima versione di Razor viene utilizzata per scaricare l'ultima versione dell'API Web di ASP.NET. Devi configurare la seguente configurazione nella directory root di Web.config:


Usa la funzione RoutePrefix


Se vuoi prefissare tutte le Azioni in un controller API, puoi inserire la funzione RoutePrefix sul controller API.

Ad esempio, vogliamo che sia in un formato come questo: http://localhost/api/customers/1/orders


Modifica l'OrdersController in questo modo.


Puoi anche usare ~ nella funzione Percorso per sovrascrivere le regole prefisso dell'Azione.



Il prefisso definito dalla caratteristica RoutePrefix può anche avere variabili parametri:


Vincoli di instradamento

Puoi vincolare le variabili parametri in un percorso tramite "{nome variabile parametro: vincolo}".


Sopra, se l'id della variabile del frammento è di tipo int, viene instradato alla prima Azione e, in caso contrario, viene instradato alla seconda Azione.

ASP.NET vincoli integrati dell'API Web includono:

{x:alpha} vincoli maiuscoli e minuscoli
{x:bool}
{x:datetime}
{x:decimale}
{x:doppio}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} limita l'intervallo di lunghezza
{x:lungo}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Puoi impostare più vincoli per una variabile parametrica contemporaneamente:

Implementa l'interfaccia IHttpRouteConstraint per personalizzare le regole di vincolo. Implementare un vincolo che non possa essere 0.


Registra un vincolo personalizzato in WebApiConfig nella cartella App_Start.


Usa vincoli personalizzati.


Parametri opzionali e i loro valori predefiniti

Se una variabile del parametro di instradamento è opzionale, il parametro deve avere anche un valore predefinito.


Aggiungi ? dopo il vincolo per indicare opzionale, e imposta il valore predefinito di id nei parametri del metodo.

Impostare un nome per il percorso



Priorità di instradamento

La priorità di percorso impostata dalla proprietà Route è determinata in base alle convenzioni e alla proprietà RouteOrder.

Le convenzioni sono:

1. Variabili di frammento statiche
2. Frammentare variabili con vincoli
3. Frammentare variabili senza vincoli
4. Variabile di frammento jolly con vincoli
5. Variabili di frammento wildcard non vincolate

Il valore predefinito della proprietà RouteOrder è 0, e più basso è il valore della proprietà, più alto è.


Sopra, l'ordine di priorità per l'instradamento è:

variabile statica di frammenti orders/details, il valore della proprietà RouteOrder è 0
orders/{id} con variabili di frammento vincolate con valore 0 nella proprietà RouteOrder
orders/{customerName} è una variabile frammentazione senza vincoli, e il valore della proprietà RouteOrder è 0
orders/{*date} è una variabile di frammento jolly con valore 0 nella proprietà RouteOrder
ordini/valore della proprietà RouteOrder pendente di 1






Precedente:Tieni traccia di ciò che può essere pagato con una carta di credito
Prossimo:Impossibile fornire un processo per un ADO.NET con il nome fisso "MySql.Data.MySqlClient"...
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com