Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 21930|Răspunde: 1

[WebAPI] web API Definiția proprietății rutei

[Copiază linkul]
Postat pe 28.04.2018 10:37:11 | | | |
ASP.NET rutarea API-ului web, pe scurt, este procesul de mapare a cererilor clienților la acțiunile corespunzătoare. În articolul "ASP.NET Web API Practice Series 03, Șabloane de Rutare, Convenții de Rutare, Setări de Rutare", am experimentat setarea rutelor prin șabloane, convenții și metode HTTP, iar avantajul acestei abordări este că șabloanele de rutare sunt plasate uniform în clasa WebApiConfig, sub folderul App_Start, ceea ce este convenabil pentru management, dar dezavantajul este că nu este suficient de flexibil.


REST tratează totul ca pe o resursă, iar uneori, o resursă cu resurse copil, cum ar fi Customer și Orders, poate dori să introducă o cerere precum customers/1/orders, dar este dificil să realizezi această cale doar prin convenție. De fapt, API-ul ASP.NET web ne oferă o funcție Route, care poate fi conectată direct la Action, fiind foarte flexibilă și intuitivă de folosit.

Hai să vedem cum să folosești funcția Route în ASP.NET MVC4.

Permite atributul Rută


Mai întâi trebuie să-l configurezi în WebApiConfig.



Metoda MapHttpAttributeRoutes de mai sus este disponibilă doar în versiunile mai noi ale API-ului web ASP.NETDacă versiunea ta este relativ scăzută, poți dezinstala versiunea veche și instala cea mai recentă versiune prin consola NuGet Package Manager.


Apoi, în Global.asax, trebuie să comentezi modul original de înregistrare a WebApiConfig și să adopți o metodă nouă, după cum urmează:

În acest moment, rularea proiectului poate raporta următoarea eroare:

Acest lucru se datorează faptului că, atunci când am descărcat cea mai recentă versiune a API-ului ASP.NET Web, am descărcat și cea mai recentă versiune de icrosoft. AspNet.WebApi.HelpPage。 Poți dezinstala cea mai recentă versiune a HelpPage și descărca versiunea mai veche.

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


Folosește proprietatea Rută

Creează o clasă Cusomter.


Creează o clasă de Ordine.

Creează o clasă Database pentru a obține colecția de Ordine.



Creează un controler API gol scris astfel:


Scrie următoarele în browserul tău:

Dacă folosești ASP.NET MVC4 pentru dezvoltare, este posibil să primești următoarea eroare când programul este rulat pentru prima dată:

[A] System.Web.WebPages.Razor.Configuration.HostSection nu poate fi transmis către [B]System.Web.WebPages.Razor.Configuration.HostSection. Tipul A derivă din "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (în "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ în contextul "Implicit") System.Web.WebPages.Razor/v4.0_2.0.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Tipul B derivă din "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (în context "Default" în "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Fișiere temporare ASP.NET/vs/feb7ce97/a525d58a/asse


Acest lucru se datorează faptului că cea mai recentă versiune a Razor este folosită la descărcarea celei mai recente versiuni a API-ului ASP.NET Web. Trebuie să configurezi următoarea configurație în directorul rădăcină al Web.config:


Folosește funcția RoutePrefix


Dacă vrei să prefixezi toate Acțiunile într-un controler API, poți pune funcția RoutePrefix pe controlerul API.

De exemplu, vrem să fie într-un format ca acesta: http://localhost/api/customers/1/orders


Modifică OrdersController în acest mod.


De asemenea, poți folosi ~ în funcția Route pentru a suprascrie regulile prefixului acțiunii.



Prefixul definit de caracteristica RoutePrefix poate avea, de asemenea, variabile parametrice:


Constrângeri de rutare

Poți constrânge variabilele parametrilor într-o rută prin "{parameter variable name: constraint}".


Mai sus, dacă ID-ul variabilei fragmentului este de tip int, acesta este direcționat către prima Acțiune, iar dacă nu, este direcționat către a doua Acțiune.

ASP.NET constrângerile integrate ale Web API includ:

{x:alpha} constrânge literele mari și mici
{x:bool}
{x:datetime}
{x:zecimal}
{x:dublu}
{x:float}
{x:guid}
{x:int}
{x:lungime(6)}
{x:length(1,20)} constrânge intervalul de lungime
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Poți seta mai multe constrângeri pentru o variabilă parametrică în același timp:

Implementează interfața IHttpRouteConstraint pentru a personaliza regulile de constrângere. Implementează o constrângere care nu poate fi 0.


Înregistrează o constrângere personalizată în WebApiConfig în folderul App_Start.


Folosește constrângeri personalizate.


Parametri opționali și valorile lor implicite

Dacă o variabilă a parametrului de rutare este opțională, parametrul trebuie să primească și o valoare implicită.


Adaugă ? după constrângere pentru a indica opționalul și setează valoarea implicită pentru id în parametrii metodei.

Stabilește un nume pentru traseu



Prioritatea de rutare

Prioritatea de rută setată de proprietatea Rută este determinată pe baza convențiilor și a proprietății Order.

Convențiile sunt:

1. Variabile statice de fragment
2. Variabile fragmentare cu constrângeri
3. Variabile fragmentare fără constrângeri
4. Variabilă fragment wildcard cu constrângeri
5. Variabile de fragment wildcard neconstrânse

Valoarea implicită a proprietății RouteOrder este 0, iar cu cât valoarea proprietății este mai mică, cu atât este mai mare.


Mai sus, ordinea priorității pentru rutare este:

variabilă statică de fragment orders/details, valoarea proprietății RouteOrder este 0
orders/{id} cu variabile fragment constrânse cu valoarea 0 în proprietatea RouteOrder
orders/{customerName} este o variabilă fragment fără constrângeri, iar valoarea proprietății RouteOrder este 0
orders/{*date} este o variabilă wildcard fragment cu valoarea 0 în proprietatea RouteOrder
comenzi/valoare a proprietății RouteOrder în așteptare de 1






Precedent:Păstrează o evidență a ceea ce se poate plăti cu un card de credit
Următor:Incapacitatea de a oferi un proces pentru un ADO.NET cu numele fix "MySql.Data.MySqlClient"...
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com