ASP.NET Controladores de API Web Principais
- 4 minutos
No exercício anterior, você criou um aplicativo Web que fornece dados de previsão do tempo de amostra e, em seguida, interagiu com ele no HTTP Read-Eval-Print Loop (REPL).
Antes de mergulhar para escrever sua própria PizzaController classe, vamos examinar o WeatherController código no exemplo para entender como ele funciona. Nesta unidade, você aprenderá como WeatherController usa a ControllerBase classe base e alguns atributos .NET para criar uma API da Web funcional em algumas dezenas de linhas de código. Depois de entender esses conceitos, você estará pronto para escrever sua própria PizzaController aula.
Aqui está o código para toda WeatherController a classe. Não se preocupe se ainda não fizer sentido. Vamos passar por isso passo a passo.
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();
}
}
A classe base: ControllerBase
Um controlador é uma classe pública com um ou mais métodos públicos conhecidos como ações. Por convenção, um controlador é colocado no diretório Controllers da raiz do projeto. As ações são expostas como pontos de extremidade HTTP por meio de roteamento. Portanto, uma solicitação HTTP GET faz https://localhost:{PORT}/weatherforecast com que o Get()WeatherForecastController método da classe seja executado.
A primeira coisa a notar é que essa classe herda da ControllerBase classe base. Essa classe base fornece muita funcionalidade padrão para lidar com solicitações HTTP, para que você possa se concentrar na lógica de negócios específica para seu aplicativo.
Nota
Se você tem experiência com Razor Pages ou desenvolvimento de arquitetura model-view-controller (MVC) no ASP.NET Core, você usou a Controller classe. Não crie um controlador de API da Web derivando da Controller classe.
Controller deriva e adiciona suporte para visualizações, portanto, é para lidar com páginas da Web, não solicitações de ControllerBase API da Web.
Atributos de classe do controlador de API
Dois atributos importantes são aplicados ao WeatherForecastController, conforme mostrado no código a seguir:
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
[ApiController] permite comportamentos opinativos que facilitam a criação de APIs da Web. Alguns comportamentos incluem inferência de origem de parâmetro, roteamento de atributos como requisito e aprimoramentos de tratamento de erros de validação de modelo*.
[Route] define o padrão de encaminhamento [controller]. O nome do controlador (sem distinção entre maiúsculas e minúsculas, sem o sufixo Controller) substitui o marcador [controller]. Este controlador lida com solicitações para https://localhost:{PORT}/weatherforecast.
Nota
A rota pode conter cadeias de caracteres estáticas, como em api/[controller]. Neste exemplo, esse controlador manipularia uma solicitação para https://localhost:{PORT}/api/weatherforecast.
Fornecer resultados meteorológicos com o Get() método
WeatherForecastController Inclui uma única ação do controlador, designada pelo [HttpGet(Name = "GetWeatherForecast")] atributo. Esse atributo roteia solicitações HTTP GET para o public IEnumerable<WeatherForecast> Get() método. Como você viu no exercício anterior, os pedidos para https://localhost:{PORT}/weatherforecast fazer com que os resultados meteorológicos fossem devolvidos.
Como você aprende mais adiante neste módulo, outras ações comuns são associadas a uma API da Web que executa operações CRUD (GET, PUT, POST, DELETE). Mas um controlador de API precisa implementar apenas uma ação do controlador.
Nesse caso, você receberá a lista completa de WeatherForecast itens devolvidos. A GET operação também permite recuperar um único item passando um identificador. No ASP.NET, você pode recuperar um único item usando o [HttpGet("{id}")] atributo. Você implementará esse atributo no próximo exercício.
Agora que você conhece os componentes fundamentais de um controlador de API da Web, está pronto para criar sua própria PizzaController classe.