Programování

Zkoumání směrování ve webovém rozhraní API

ASP.Net Web API je odlehčený rámec používaný pro vytváření bezstavových služeb HTTP. Webové rozhraní API můžete použít k návrhu a implementaci služeb RESTful, které běží na protokolu HTTP. REST je architektonický styl - sada omezení používaných k implementaci bezstavových služeb. Web API se již stalo zvolenou technologií pro vytváření lehkých služeb HTTP. V tomto příspěvku představím diskusi o tom, jak směrování funguje ve webovém rozhraní API.

Když vytvoříte projekt webového rozhraní API v sadě Visual Studio, zjistíte, že se vytvoří také projekt MVC. Podobně jako ASP.Net MVC je konfigurace směrování v projektu webového API vyvolána ze souboru Global.asax. Projekt webového API ukládá informace o konfiguraci ve třídách RouteConfig a WebApiConfig - oba jsou přítomny ve složce Application_Start. Podobně jako projekt MVC byste sledovali soubor RouteConfig.cs vytvořený ve složce App_Start ve vašem řešení.

Za zpracování požadavků HTTP odpovídá správce ve webovém rozhraní API. Veřejné metody kontroleru jsou známé jako akční metody. Jakmile je přijat požadavek, běhové prostředí webového rozhraní API směruje požadavek na příslušnou akci ke zpracování požadavku. Nyní, aby bylo možné určit, která akce by měla být vyvolána, modul runtime webového rozhraní API využívá směrovací tabulku. Na rozdíl od typické aplikace ASP.Net MVC běhové prostředí webového rozhraní API směruje příchozí požadavky na příslušný řadič porovnáním slovesa HTTP požadavku s příslušnou metodou akce.

S ASP.Net 5 (bude vydán brzy jako součást Visual Studio 2015) existuje jednotný základní rámec - máte jediný rámec pro výstup, jediný rámec vazby modelu a kanál s jedním filtrem. Nyní máte jedno sjednocené jádro pro ASP.Net MVC, webové rozhraní API ASP.Net a webové stránky ASP.Net. Takže nyní existuje pouze jeden typ řadiče, který zpracovává požadavky: je to společné pro vaše aplikace ASP.Net MVC, ASP.Net Web API a ASP.Net.

Výchozí šablona trasy MVC vypadá takto:

{controller} / {action} / {id}

Naproti tomu výchozí trasa webového rozhraní API vypadá takto:

api / {controller} / {id}

Výchozí trasa vytvořená při vytváření nového projektu webového rozhraní API v sadě Visual Studio vypadá takto:

veřejná statická třída WebApiConfig

{

public static void Register (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

name: "DefaultApi",

routeTemplate: "api / {controller} / {id}",

výchozí: nový {id = RouteParameter.Optional}

);

}

}

Všimněte si, jak je před výchozí cestou předpona „api“. Je dobrým zvykem definovat trasy vaší aplikace webového API tak, že je předponujete „api“, abyste je odlišili od standardní trasy MVC. V jiné poznámce, když se podíváte na výchozí trasu pro projekt webového rozhraní API, neuvidí se parametr trasy „{action}“ - běhové prostředí webového rozhraní API mapuje požadavky na příslušné akce na základě slovesa HTTP žádosti.

Definici trasy webového rozhraní API však můžete upravit tak, aby obsahovala parametr „{action}“. Následující fragment kódu ukazuje, jak vypadá upravená třída WebApiConfig.

veřejná statická třída WebApiConfig

{

public static void Register (HttpConfiguration config)

{

config.Routes.MapHttpRoute (

name: "DefaultApi",

routeTemplate: "api / {controller} / {action} / {id}",

výchozí: nový {id = RouteParameter.Optional}

);

}

}

Nyní, když jste jako součást trasy zadali „{action}“, je třeba při vyvolání metody WebAPI zadat akci. Zvažte následující adresu URL: // idgservice / autoři / 1

V této adrese URL je idgservice název domény, kde byl hostován WebAPI, autoři je název řadiče a jako parametr je předána 1. To by však nefungovalo, pokud jste v definici trasy definovali „{action}“. V tomto případě budete muset při volání svého rozhraní WebAPI výslovně uvést název akce. Zde je správná adresa URL, která obsahuje název akce jako součást adresy URL: // idgservice / autoři / GetAuthorDetails /

Všimněte si, že název akce ve výše uvedené adrese URL je GetAuthorDetails a byl zmíněn jako součást upravené adresy URL.

Můžete také určit metodu HTTP pro akci pomocí atributu HttpGet, HttpPut, HttpPost nebo HttpDelete. Níže uvedený fragment kódu ukazuje, jak toho lze dosáhnout:

veřejná třída AuthorsController: ApiController

{

[HttpGet]

veřejný autor GetAuthor (id) {}

}

Pokud chcete pro akci povolit více metod HTTP, můžete využít atribut AcceptVerbs, jak je znázorněno níže:

veřejná třída ProductsController: ApiController

{

[AcceptVerbs ("ZÍSKAT", "HLAVA")]

veřejný autor GetAuthor (id) {}

}

Akce můžete také přepsat pomocí atributu ActionName, jak je znázorněno ve fragmentu kódu uvedeném níže:

veřejná třída AuthorsController: ApiController

{

[HttpGet]

[ActionName ("AuthorDetails")]

veřejný autor GetAuthor (id) {}

}

Všimněte si, že můžete také zabránit vyvolání metody jako akce pomocí atributu NonAction, jak je znázorněno níže.

veřejná třída AuthorsController: ApiController

{

[HttpGet]

[Žádná akce]

public Boolean ValidateLogin (id) {}

}

Copyright cs.verticalshadows.com 2021