Middleware em aplicativos de APIs mínimas
Observação
Esta não é a versão mais recente deste artigo. Para a versão atual, consulte a versão .NET 9 deste artigo.
Aviso
Esta versão do ASP.NET Core não tem mais suporte. Para obter mais informações, consulte a Política de Suporte do .NET e do .NET Core. Para a versão atual, consulte a versão .NET 9 deste artigo.
Importante
Essas informações relacionam-se ao produto de pré-lançamento, que poderá ser substancialmente modificado antes do lançamento comercial. A Microsoft não oferece nenhuma garantia, explícita ou implícita, quanto às informações fornecidas aqui.
Para a versão atual, consulte a versão .NET 9 deste artigo.
O WebApplication
adiciona automaticamente o seguinte middleware a Minimal API applications
, dependendo de determinadas condições:
UseDeveloperExceptionPage
é adicionado primeiro quando oHostingEnvironment
é"Development"
.UseRouting
será adicionado em segundo se o código do usuário ainda não tiver chamadoUseRouting
e se houver pontos de extremidade configurados, por exemploapp.MapGet
.UseEndpoints
será adicionado no final do pipeline de middleware se algum ponto de extremidade estiver configurado.UseAuthentication
será adicionado imediatamente apósUseRouting
se o código do usuário ainda não tiver chamadoUseAuthentication
e seIAuthenticationSchemeProvider
puder ser detectado no provedor de serviços.IAuthenticationSchemeProvider
é adicionado por padrão ao usarAddAuthentication
, e os serviços são detectados usandoIServiceProviderIsService
.UseAuthorization
será adicionado em seguida se o código do usuário ainda não tiver chamadoUseAuthorization
e seIAuthorizationHandlerProvider
puder ser detectado no provedor de serviços.IAuthorizationHandlerProvider
é adicionado por padrão ao usarAddAuthorization
, e os serviços são detectados usandoIServiceProviderIsService
.- O middleware e os pontos de extremidade configurados pelo usuário são adicionados entre
UseRouting
eUseEndpoints
.
O código a seguir é de fato aquilo que o middleware automático que está sendo adicionado ao aplicativo produz:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Em alguns casos, a configuração de middleware padrão não é a correta para o aplicativo e requer modificação. Por exemplo, UseCors deve ser chamado antes de UseAuthentication e de UseAuthorization. O aplicativo precisa chamar UseAuthentication
e UseAuthorization
se UseCors
for chamado:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Se o middleware tiver que ser executado antes da correspondência de rotas ocorrer, UseRouting deverá ser chamado e o middleware deverá ser colocado antes da chamada para UseRouting
. UseEndpoints não é necessário nesse caso, já que é adicionado automaticamente conforme descrito anteriormente:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Ao adicionar um middleware de terminal:
- O middleware deve ser adicionado após
UseEndpoints
. - O aplicativo precisa chamar
UseRouting
eUseEndpoints
para que o middleware do terminal possa ser colocado no local correto.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
O middleware de terminal é um middleware que é executado se nenhum ponto de extremidade lidar com a solicitação.
O WebApplication
adiciona automaticamente o seguinte middleware a Minimal API applications
, dependendo de determinadas condições:
UseDeveloperExceptionPage
é adicionado primeiro quando oHostingEnvironment
é"Development"
.UseRouting
será adicionado em segundo se o código do usuário ainda não tiver chamadoUseRouting
e se houver pontos de extremidade configurados, por exemploapp.MapGet
.UseEndpoints
será adicionado no final do pipeline de middleware se algum ponto de extremidade estiver configurado.UseAuthentication
será adicionado imediatamente apósUseRouting
se o código do usuário ainda não tiver chamadoUseAuthentication
e seIAuthenticationSchemeProvider
puder ser detectado no provedor de serviços.IAuthenticationSchemeProvider
é adicionado por padrão ao usarAddAuthentication
, e os serviços são detectados usandoIServiceProviderIsService
.UseAuthorization
será adicionado em seguida se o código do usuário ainda não tiver chamadoUseAuthorization
e seIAuthorizationHandlerProvider
puder ser detectado no provedor de serviços.IAuthorizationHandlerProvider
é adicionado por padrão ao usarAddAuthorization
, e os serviços são detectados usandoIServiceProviderIsService
.- O middleware e os pontos de extremidade configurados pelo usuário são adicionados entre
UseRouting
eUseEndpoints
.
O código a seguir é de fato aquilo que o middleware automático que está sendo adicionado ao aplicativo produz:
if (isDevelopment)
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
if (isAuthenticationConfigured)
{
app.UseAuthentication();
}
if (isAuthorizationConfigured)
{
app.UseAuthorization();
}
// user middleware/endpoints
app.CustomMiddleware(...);
app.MapGet("/", () => "hello world");
// end user middleware/endpoints
app.UseEndpoints(e => {});
Em alguns casos, a configuração de middleware padrão não é a correta para o aplicativo e requer modificação. Por exemplo, UseCors deve ser chamado antes de UseAuthentication e de UseAuthorization. O aplicativo precisa chamar UseAuthentication
e UseAuthorization
se UseCors
for chamado:
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
Se o middleware tiver que ser executado antes da correspondência de rotas ocorrer, UseRouting deverá ser chamado e o middleware deverá ser colocado antes da chamada para UseRouting
. UseEndpoints não é necessário nesse caso, já que é adicionado automaticamente conforme descrito anteriormente:
app.Use((context, next) =>
{
return next(context);
});
app.UseRouting();
// other middleware and endpoints
Ao adicionar um middleware de terminal:
- O middleware deve ser adicionado após
UseEndpoints
. - O aplicativo precisa chamar
UseRouting
eUseEndpoints
para que o middleware do terminal possa ser colocado no local correto.
app.UseRouting();
app.MapGet("/", () => "hello world");
app.UseEndpoints(e => {});
app.Run(context =>
{
context.Response.StatusCode = 404;
return Task.CompletedTask;
});
O middleware de terminal é um middleware que é executado se nenhum ponto de extremidade lidar com a solicitação.
Para obter informações sobre middleware antifalsificação em APIs mínimas, consulte Evitar ataques de falsificação de solicitação entre sites (XSRF/CSRF) no ASP.NET Core
Para saber mais sobre middleware, confira ASP.NET Core Middleware e a lista de middleware internos que podem ser adicionados aos aplicativos.
Para obter mais informações sobre as APIs mínimas, confira Minimal APIs overview
.