O ASP.NET Core oferece um modelo de hospedagem simplificado, chamado de APIs mínimas, que nos permite construir APIs leves com dependências mínimas. Ideal para criar serviços rápidos e simples, as APIs mínimas foram introduzidas inicialmente no ASP.NET Core 6 para eliminar a complexidade das APIs tradicionais e facilitar a criação de microsserviços.

O objetivo desta postagem é explorar os novos recursos para construção de APIs mínimas introduzidas no ASP.NET Core 8. Para usar os exemplos de código fornecidos neste artigo, você deve ter o Visual Studio 2022 instalado em seu sistema. Se ainda não tiver uma cópia, você pode baixar o Visual Studio 2022 aqui.

Crie um projeto de API Web ASP.NET Core no Visual Studio 2022

Para criar um projeto de API Web ASP.NET Core 8 no Visual Studio 2022, siga as etapas descritas abaixo.

  1. Inicie o IDE do Visual Studio 2022.
  2. Clique em “Criar novo projeto”.
  3. Na janela “Criar novo projeto”, selecione “API Web ASP.NET Core” na lista de modelos exibida.
  4. Clique em Avançar.
  5. Na janela “Configure seu novo projeto”, especifique o nome e o local do novo projeto. Opcionalmente, marque a caixa de seleção “Colocar solução e projeto no mesmo diretório”, dependendo de suas preferências.
  6. Clique em Avançar.
  7. Na janela “Informações adicionais” mostrada a seguir, selecione “.NET 8.0 (Long Term Support)” como a versão da estrutura e desmarque a caixa de seleção que diz “Usar controladores”, pois usaremos APIs mínimas neste projeto.
  8. Em outra parte da janela “Informações adicionais”, deixe o “Tipo de autenticação” definido como “Nenhum” (o padrão) e certifique-se de que as caixas de seleção “Ativar suporte à API aberta”, “Configurar para HTTPS” e “Ativar Docker” permaneçam desmarcadas . Não usaremos nenhum desses recursos aqui.
  9. Clique em Criar.

Usaremos este projeto de API Web do ASP.NET Core para trabalhar com os exemplos de código fornecidos nas seções abaixo.

Crie uma API mínima no ASP.NET Core

Você pode substituir o código gerado pelo seguinte trecho de código para criar uma API mínima mínima.

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("https://www.infoworld.com/", () => "Hello, World!");
app.Run();

Ao executar a aplicação, o texto “Hello World!” será exibido em seu navegador.

Examinaremos os novos recursos da API mínima nas seções a seguir.

Use vinculação de modelo em APIs mínimas

O suporte para vinculação FromForm foi adicionado a APIs mínimas com o ASP.NET Core 8. Antes de explorarmos a vinculação FromForm, vamos dar uma olhada rápida nos outros tipos de vinculação de modelo que podemos usar em APIs mínimas.

As APIs mínimas do ASP.NET Core fornecem suporte para os seguintes tipos de associação de modelo:

  • Vinculação FromBody
  • Vinculação FromHeader
  • Vinculação FromRoute
  • Vinculação FromQuery
  • Vinculação FromForm

Com o novo suporte para vinculação FromForm em APIs mínimas, a vinculação de parâmetros de formulários agora é suportada para coleções como listas e dicionários e para tipos complexos.

Vinculação FromBody

A ligação FromBody extrai dados do corpo da solicitação HTTP e os atribui aos parâmetros de seus métodos de ação.

(HttpPost)
public IActionResult CreateAuthor((FromBody) Author author)
{
    //Usual code
}

Vinculação FromHeader

A ligação FromHeader extrai dados dos cabeçalhos de solicitação HTTP e os atribui aos parâmetros de seus métodos de ação.

(HttpGet)
public IActionResult GetAuthors((FromHeader("Authorization")) string authHeader)
{
    //Write your code here to validate the authorization token
}

Vinculação FromRoute

A ligação FromRoute é usada para recuperar dados de segmentos de caminho de URL de solicitação e atribuí-los a parâmetros de seus métodos de ação. Você pode usar esse tipo de associação de modelo para identificar um recurso específico.

(HttpGet("{id}"))
public IActionResult GetAuthorById(int id)
{
    //Write your code here to retrieve an author instance based on id
}

Vinculação FromQuery

A ligação FromQuery é usada para recuperar dados da string de consulta de uma solicitação HTTP e usá-la para preencher um objeto de modelo.

(HttpGet)
public ActionResult<List<Author>> GetAuthors((FromQuery) AuthorFilter filter)
{
    //Write code here to process the filter criteria and retrieve the list of filtered author records
}

Vinculação FromForm

Você pode usar a ligação FromForm para extrair dados de campos de formulário postados em suas APIs mínimas. Por exemplo, o trecho de código a seguir ilustra como você pode usar os parâmetros extraídos de um formulário publicado para criar uma nova instância do Autor.

(HttpPost)
public async Task<IActionResult> CreateAuthor((FromForm) Author author)
{
  //Usual code
}

Use tokens antifalsificação em APIs mínimas

O ASP.NET Core 8 também traz suporte para tokens antifalsificação para APIs mínimas. Para usar esse recurso, você precisa chamar o método AddAntiForgery para registrar serviços antifalsificação com o pipeline de processamento de solicitação, conforme mostrado no trecho de código fornecido abaixo.

var builder = WebApplication.CreateBuilder();
builder.Services.AddAntiforgery();
var app = builder.Build();
app.MapGet("https://www.infoworld.com/",()=>"Hello World!");
app.Run();

O trecho de código a seguir mostra como você pode usar tokens antifalsificação em suas APIs mínimas.

app.MapGet("https://www.infoworld.com/", (HttpContext context, IAntiforgery antiforgery) =>
{
    var token = antiforgery.GetAndStoreTokens(context);
    return Results.Ok("Success...");
});

Use AOT nativo em APIs mínimas

Você pode compilar diretamente o código .NET em código nativo antecipado (AOT) usando os recursos de AOT nativo com suporte do .NET Core. A pré-compilação melhorará o tempo de inicialização do seu aplicativo porque elimina a necessidade de compilação just-in-time (JIT) durante o tempo de execução.

Agora você pode aproveitar o suporte Native AOT em suas APIs mínimas no ASP.NET Core 8. Para adicionar suporte para Native AOT ao seu projeto, você deve adicionar a propriedade PublishAot ao arquivo do projeto, conforme mostrado no trecho de código abaixo.

<PropertyGroup><PublishAot>true</PublishAot></PropertyGroup>

Observe que você também pode usar o comando a seguir no prompt de comando do desenvolvedor do Visual Studio para criar um novo projeto de API mínimo com suporte AOT nativo habilitado. Em seguida, você pode pré-compilar seus assemblies mínimos de API do ASP.NET Core em código nativo que será executado diretamente no sistema de destino, em vez de agrupá-los com o tempo de execução do .NET Core.

dotnet new webapiaot

APIs mínimas no ASP.NET Core 9

No ecossistema ASP.NET Core, o suporte para APIs mínimas está sendo aprimorado a cada dia. Embora o .NET 9 ainda esteja em status de visualização, vários novos recursos foram adicionados às APIs mínimas no ASP.NET Core 9. Discutirei eles em uma postagem futura aqui, quando o lançamento oficial do ASP.NET Core 9 estiver disponível.