Konfigurace webového rozhraní API ASP.NET 2
Toto téma popisuje, jak nakonfigurovat ASP.NET webové rozhraní API.
- Nastavení konfigurace
- Konfigurace webového rozhraní API s využitím hostování ASP.NET
- Konfigurace webového rozhraní API s využitím samoobslužného hostování OWIN
- Globální služby webového rozhraní API
- Konfigurace podle kontroleru
Nastavení konfigurace
Nastavení konfigurace webového rozhraní API jsou definována ve třídě HttpConfiguration .
Člen | Description |
---|---|
DependencyResolver | Povolí injektáž závislostí pro kontrolery. Viz Použití překladače závislostí webového rozhraní API. |
Filtry | Filtry akcí. |
Formatters | Formátovací moduly typu multimédií. |
IncludeErrorDetailPolicy | Určuje, jestli má server obsahovat podrobnosti o chybách, jako jsou zprávy o výjimce a trasování zásobníku, do zpráv odpovědí HTTP. Viz IncludeErrorDetailPolicy. |
Inicializátor | Funkce, která provádí konečnou inicializaci HttpConfiguration. |
Obslužné rutiny zpráv | Obslužné rutiny zpráv HTTP. |
ParameterBindingRules | Kolekce pravidel pro parametry vazby pro akce kontroleru. |
Vlastnosti | Obecný pytel vlastností. |
Trasy | Kolekce tras. Viz Směrování ve webovém rozhraní API ASP.NET. |
Služby | Kolekce služeb. Viz Služby. |
Požadavky
Visual Studio 2017 Edice Community, Professional nebo Enterprise.
Konfigurace webového rozhraní API s využitím hostování ASP.NET
V ASP.NET aplikaci nakonfigurujte webové rozhraní API voláním globalConfiguration.Configure v metodě Application_Start . Metoda Configure přebírá delegáta s jedním parametrem typu HttpConfiguration. Proveďte veškerou konfiguraci uvnitř delegáta.
Tady je příklad použití anonymního delegáta:
using System.Web.Http;
namespace WebApplication1
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
});
}
}
}
V sadě Visual Studio 2017 šablona projektu "ASP.NET Web Application" automaticky nastaví konfigurační kód, pokud v dialogovém okně Nový projekt ASP.NET vyberete webové rozhraní API.
Šablona projektu vytvoří soubor s názvem WebApiConfig.cs ve složce App_Start. Tento soubor kódu definuje delegáta, kam byste měli vložit konfigurační kód webového rozhraní API.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace WebApplication1
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// TODO: Add any additional configuration code.
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Šablona projektu také přidá kód, který volá delegáta z Application_Start.
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
Konfigurace webového rozhraní API pomocí Self-Hosting OWIN
Pokud používáte samoobslužné hostování pomocí OWIN, vytvořte novou instanci HttpConfiguration . Proveďte jakoukoli konfiguraci této instance a pak předejte instanci metodě rozšíření Owin.UseWebApi .
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
Kompletní kroky najdete v kurzu Použití OWIN k Self-Host ASP.NET webového rozhraní API 2 .
Globální služby webového rozhraní API
Kolekce HttpConfiguration.Services obsahuje sadu globálních služeb, které webové rozhraní API používá k provádění různých úloh, jako je výběr kontroleru a vyjednávání obsahu.
Poznámka
Kolekce Services není obecný mechanismus pro zjišťování služeb nebo injektáž závislostí. Ukládá pouze typy služeb, které jsou známé architektuře webového rozhraní API.
Kolekce Services se inicializuje s výchozí sadou služeb a můžete poskytovat vlastní implementace. Některé služby podporují více instancí, zatímco jiné můžou mít jenom jednu instanci. (Můžete ale také poskytovat služby na úrovni kontroleru. Viz Konfigurace podle kontroleru.
Single-Instance Services
Služba | Popis |
---|---|
IActionValueBinder | Získá vazbu pro parametr. |
IApiExplorer | Získá popisy rozhraní API vystavené aplikací. Viz Vytvoření stránky nápovědy pro webové rozhraní API. |
IAssembliesResolver | Získá seznam sestavení pro aplikaci. Viz Výběr směrování a akce. |
IBodyModelValidator | Ověří model, který je načten z textu požadavku formátovacím typem média. |
IContentNegotiator | Provádí vyjednávání obsahu. |
IDocumentationProvider | Poskytuje dokumentaci k rozhraním API. Výchozí hodnota je null. Viz Vytvoření stránky nápovědy pro webové rozhraní API. |
IHostBufferPolicySelector | Označuje, jestli má hostitel ukládat do vyrovnávací paměti těla entit zpráv HTTP. |
IHttpActionInvoker | Vyvolá akci kontroleru. Viz Výběr směrování a akce. |
IHttpActionSelector | Vybere akci kontroleru. Viz Výběr směrování a akce. |
IHttpControllerActivator | Aktivuje kontroler. Viz Výběr směrování a akce. |
IHttpControllerSelector | Vybere kontroler. Viz Výběr směrování a akce. |
IHttpControllerTypeResolver | Poskytuje seznam typů kontroleru webového rozhraní API v aplikaci. Viz Výběr směrování a akce. |
ITraceManager | Inicializuje architekturu trasování. Viz Trasování ve webovém rozhraní API ASP.NET. |
ITraceWriter | Poskytuje zapisovač trasování. Výchozí je zapisovač trasování bez operace. Viz Trasování ve webovém rozhraní API ASP.NET. |
IModelValidatorCache | Poskytuje mezipaměť validátorů modelů. |
Multiple-Instance Services
Služba | Popis |
---|---|
IFilterProvider | Vrátí seznam filtrů pro akci kontroleru. |
ModelBinderProvider | Vrátí pořadač modelu pro daný typ. |
ModelMetadataProvider | Poskytuje metadata pro model. |
ModelValidatorProvider | Poskytuje validátor pro model. |
ValueProviderFactory | Vytvoří zprostředkovatele hodnot. Další informace najdete v blogovém příspěvku Mikea Stalla How to create a custom value provider in WebAPI |
Pokud chcete přidat vlastní implementaci do služby s více instancemi, volejte Přidat nebo Vložit v kolekci Services :
config.Services.Add(typeof(IFilterProvider), new MyFilterProvider());
Pokud chcete nahradit službu s jednou instancí vlastní implementací, zavolejte Nahradit v kolekci Services :
config.Services.Replace(typeof(ITraceWriter), new MyTraceWriter());
konfigurace Per-Controller
U jednotlivých kontrolerů můžete přepsat následující nastavení:
- Formátování typů médií
- Pravidla vazby parametrů
- Služby
Chcete-li to provést, definujte vlastní atribut, který implementuje rozhraní IControllerConfiguration . Potom atribut použijte na kontroleru.
Následující příklad nahradí výchozí formátovací moduly typu média vlastním formátovačem.
using System;
using System.Web.Http;
using System.Web.Http.Controllers;
namespace WebApplication1.Controllers
{
public class UseMyFormatterAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings settings,
HttpControllerDescriptor descriptor)
{
// Clear the formatters list.
settings.Formatters.Clear();
// Add a custom media-type formatter.
settings.Formatters.Add(new MyFormatter());
}
}
[UseMyFormatter]
public class ValuesController : ApiController
{
// Controller methods not shown...
}
}
Metoda IControllerConfiguration.Initialize přijímá dva parametry:
- Objekt HttpControllerSettings
- Objekt HttpControllerDescriptor
Popisovač HttpControllerDescriptor obsahuje popis kontroleru, který můžete zkontrolovat pro informační účely (například k rozlišení mezi dvěma kontrolery).
Pomocí objektu HttpControllerSettings nakonfigurujte kontroler. Tento objekt obsahuje podmnožinu konfiguračních parametrů, které můžete přepsat na základě kontroleru. Všechna nastavení, která nezměníte, ve výchozím nastavení na globální objekt HttpConfiguration .