ASP.NET core kontrolery webového rozhraní API
V předchozím cvičení jste vytvořili webovou aplikaci, která poskytuje ukázková data předpovědi počasí, a pak s nimi pracovala ve smyčce HTTP Read-Eval-Print (REPL).
Než se pustíte do psaní vlastní PizzaController
třídy, podívejme se na kód v ukázce WeatherController
, abyste pochopili, jak funguje. V této lekci se dozvíte, jak WeatherController
pomocí ControllerBase
základní třídy a několika atributů .NET sestavit funkční webové rozhraní API v několika desítkách řádků kódu. Po pochopení těchto konceptů jste připraveni napsat vlastní PizzaController
třídu.
Tady je kód pro celou WeatherController
třídu. Nedělejte si starosti, pokud to ještě nemá smysl. Pojďme si to projít krok za krokem.
using Microsoft.AspNetCore.Mvc;
namespace ContosoPizza.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
Základní třída: ControllerBase
Kontroler je veřejná třída s jednou nebo více veřejnými metodami známými jako akce. Podle konvence se kontroler umístí do kořenového adresáře kontrolerů projektu. Tyto akce se zveřejňují jako koncové body HTTP prostřednictvím směrování. Požadavek HTTP GET
, který https://localhost:{PORT}/weatherforecast
způsobí Get()
spuštění metody WeatherForecastController
třídy.
První věc, kterou si můžete všimnout, je, že tato třída dědí ze ControllerBase
základní třídy. Tato základní třída poskytuje mnoho standardních funkcí pro zpracování požadavků HTTP, takže se můžete zaměřit na konkrétní obchodní logiku pro vaši aplikaci.
Poznámka:
Pokud máte zkušenosti s vývojem architektury Razor Pages nebo architektury MVC (model-view-controller) v ASP.NET Core, použili Controller
jste třídu. Nevytvářejte kontroler webového rozhraní API odvozením z třídy Controller
. Controller
je odvozena od ControllerBase
zobrazení a přidává podporu zobrazení, takže se jedná o zpracování webových stránek, nikoli požadavků webového rozhraní API.
Atributy třídy kontroleru rozhraní API
Na , jak je znázorněno v následujícím kódu, se použijí WeatherForecastController
dva důležité atributy:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
[ApiController]
umožňuje názorné chování, které usnadňuje vytváření webových rozhraní API. Mezi některá chování patří odvození zdroje parametrů, směrování atributů jako požadavek a vylepšení zpracování chyb při ověřovánímodelu*.
[Route]
definuje vzor směrování [controller]
. Název kontroleru (nerozlišuje malá a velká písmena bez přípony kontroleru ) nahradí [controller]
token. Tento kontroler zpracovává požadavky na https://localhost:{PORT}/weatherforecast
.
Poznámka:
Trasa může obsahovat statické řetězce, například v api/[controller]
. V tomto příkladu by tento kontroler zpracovával požadavek na https://localhost:{PORT}/api/weatherforecast
.
Poskytnutí výsledků počasí metodou Get()
WeatherForecastController
obsahuje jednu akci kontroleru určenou atributem [HttpGet(Name = "GetWeatherForecast")]
. Tento atribut směruje požadavky HTTP GET
na metodu public IEnumerable<WeatherForecast> Get()
. Jak jste viděli v předchozím cvičení, žádosti o https://localhost:{PORT}/weatherforecast
vrácení výsledků počasí.
Jak se později v tomto modulu dozvíte, další běžné akce jsou přidružené k webovému rozhraní API, které provádí operace CRUD (GET
, PUT
, POST
). DELETE
Kontroler rozhraní API ale musí implementovat jenom jednu akci kontroleru.
V tomto případě získáte úplný seznam vrácených WeatherForecast
položek. Operace GET
také umožňuje načtení jedné položky předáním identifikátoru. V ASP.NET můžete načíst jednu položku pomocí atributu [HttpGet("{id}")]
. Tento atribut implementujete v dalším cvičení.
Teď, když znáte základní komponenty kontroleru webového rozhraní API, jste připraveni vytvořit vlastní PizzaController
třídu.