Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 21930|Odpověď: 1

[WebAPI] Web API Definice vlastností trasy

[Kopírovat odkaz]
Zveřejněno 28.04.2018 10:37:11 | | | |
ASP.NET směrování Web API je jednoduše řečeno proces mapování klientských požadavků na odpovídající akce. V článku "ASP.NET Web API Practice Series 03, Routing Templates, Routing Conventions, Routing Settings" jsem zažil nastavení tras přes šablony, konvence a HTTP metody, a výhodou tohoto přístupu je, že šablony směrování jsou jednotně umístěny ve třídě WebApiConfig pod složkou App_Start, což je pohodlné pro správu, ale nevýhodou je, že není dostatečně flexibilní.


REST považuje vše za zdroj a někdy může být zdroj s podzdroji, jako jsou Customer a Orders, chtít zadat požadavek jako customers/1/Orders, ale tímto způsobem je obtížné dosáhnout pouze podle konvence. Ve skutečnosti nám ASP.NET Web API poskytuje funkci Route, kterou lze přímo propojit s Action, jež je velmi flexibilní a intuitivní na používání.

Pojďme si vyzkoušet, jak používat funkci Route v ASP.NET MVC4.

Povolit atribut Route


Nejprve to musíte nastavit ve WebApiConfig.



Výše uvedená metoda MapHttpAttributeRoutes je dostupná pouze v novějších verzích ASP.NET Web APIPokud je vaše verze relativně nízká, můžete odinstalovat starou verzi a nainstalovat nejnovější přes konzoli Správce balíčků NuGet.


Dále v Global.asax musíte okomentovat původní způsob registrace WebApiConfig a přijmout novou metodu, a to následovně:

V tuto chvíli může spuštění projektu hlásit následující chybu:

Je to proto, že při stahování nejnovější verze ASP.NET Web API jsem si stáhl i nejnovější verzi icrosoftu. AspNet.WebApi.HelpPage。 Můžete odinstalovat nejnovější verzi HelpPage a stáhnout si starší.

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


Použijte vlastnost Route

Vytvořte si kurz Cusomter.


Vytvořte třídu Order.

Vytvořte třídu Databáze pro získání kolekce Order.



Vytvořte prázdný API controller napsaný takto:


Zadejte do svého prohlížeče následující:

Pokud používáte ASP.NET MVC4 pro vývoj, můžete při prvním spuštění programu dostat následující chybu:

[A] System.Web.WebPages.Razor.Configuration.HostSection nelze přenášet do [B]System.Web.WebPages.Razor.Configuration.HostSection. Typ A je odvozen z "System.Web.WebPages.Razor, version=2.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (v "C:/Windows/Microsoft.Net/assembly/GAC_MSIL/ v kontextu "Default") System.Web.WebPages.Razor/v4.0_2.0.0.0__31bf3856ad364e35/System.Web.WebPages.Razor.dll"). Typ B je odvozen z "System.Web.WebPages.Razor, version=3.0.0.0, culture=neutral, PublicKeyToken=31bf3856ad364e35" (v kontextu "Default" v "C:/Windows/Microsoft.NET/Framework/v4.0.30319/ Dočasné ASP.NET Files/vs/feb7ce97/a525d58a/asse


Je to proto, že při stahování nejnovější verze ASP.NET Web API se používá nejnovější verze Razoru. V kořenovém adresáři Web.config je potřeba nastavit následující konfiguraci:


Použijte funkci RoutePrefix


Pokud chcete předpojit všechny akce v API controlleru, můžete na API controlleru umístit funkci RoutePrefix.

Například chceme, aby to bylo ve formátu takto: http://localhost/api/customers/1/orders


Upravte OrdersController tímto způsobem.


Můžete také použít ~ ve funkci Route k přepsání pravidel předpony Akce.



Prefix definovaný funkcí RoutePrefix může mít také proměnné parametrů:


Směrovací omezení

Parametrické proměnné v trase můžete omezit pomocí "{parameter variable name: constraint}".


Výše, pokud je fragmentní proměnná id typu int, je směrováno na první akci, a pokud ne, je směrováno na druhou akci.

ASP.NET Vestavěná omezení Web API zahrnují:

{x:alpha} omezuje velká a malá písmena
{x:bool}
{x:datetime}
{x:decimal}
{x:double}
{x:float}
{x:guid}
{x:int}
{x:length(6)}
{x:length(1,20)} omezuje rozsah délky
{x:long}
{x:maxlength(10)}
{x:min(10)}
{x:range(10,50)}
{x:regex(regex)}


Můžete nastavit více omezení pro proměnnou parametru současně:

Implementujte rozhraní IHttpRouteConstraint pro přizpůsobení pravidel omezení. Implementujte omezení, které nemůže být 0.


Zaregistrujte vlastní omezení ve WebApiConfig ve složce App_Start.


Používejte vlastní omezení.


Volitelné parametry a jejich výchozí hodnoty

Pokud je proměnná směrovacího parametru volitelná, musí být i tato proměnná přiřazena výchozí hodnota.


Přidejte ? za omezení, aby označili volitelné, a nastavte výchozí hodnotu id v parametrech metody.

Stanovte trasě jméno



Priorita směrování

Priorita trasy nastavená vlastností Route je určena na základě konvencí a vlastnosti RouteOrder.

Konvence jsou:

1. Statické fragmentové proměnné
2. Fragmentační proměnné s omezeními
3. Fragmentní proměnné bez omezení
4. Proměnná fragmentů divoké karty s omezeními
5. Neomezené proměnné fragmentů divoké karty

Výchozí hodnota vlastnosti RouteOrder je 0 a čím menší hodnota vlastnosti, tím vyšší je.


Výše uvedené pořadí priority směrování je:

proměnná ordered / details statická fragment, hodnota vlastnosti RouteOrder je 0
orders/{id} s omezenými fragmentními proměnnými s hodnotou 0 ve vlastnosti RouteOrder
orders/{customerName} je fragmentová proměnná bez omezení a hodnota vlastnosti RouteOrder je 0
orders/{*date} je proměnná fragmentů divoké karty s hodnotou 0 ve vlastnosti RouteOrder
příkazy/čekající hodnota vlastnosti RouteOrder 1






Předchozí:Vést záznam o tom, co lze zaplatit kreditní kartou
Další:Nebylo možné poskytnout proces pro ADO.NET s pevným názvem "MySql.Data.MySqlClient"...
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com