Partilhar via


Descontinuação do método de extensão WithOpenApi

Os WithOpenApi métodos foram preteridos no .NET 10. Invocar esses métodos agora produz o diagnóstico ASPDEPR002 em tempo de compilação e um aviso padrão Obsolete que afirma:

WithOpenApi foi preterido e será removido em uma versão futura. Para mais informações, visite https://aka.ms/aspnet/deprecate/002.

Versão introduzida

.NET 10 Prévia 7

Comportamento anterior

Anteriormente, você podia usar o WithOpenApi método de extensão sem avisos:

app.MapGet("/weather", () => ...)
   .WithOpenApi();   // No warnings.

Novo comportamento

A partir do .NET 10, o uso do método extension produz um aviso do WithOpenApi compilador:

app.MapGet("/weather", () => ...)
   .WithOpenApi();   // Warning ASPDEPR002: WithOpenApi is deprecated...

No entanto, a chamada ainda compila e executa.

Tipo de mudança disruptiva

Essa alteração pode afetar compatibilidade da fonte.

Motivo da mudança

WithOpenApi funcionalidade duplicada agora fornecida pelo pipeline de geração de documentos OpenAPI integrado. A sua substituição simplifica a superfície da API e prepara-se para a sua eventual remoção.

Remova .WithOpenApi() as chamadas do seu código.

  • Se você usou Microsoft.AspNetCore.OpenApi para geração de documentos, use o AddOpenApiOperationTransformer<TBuilder>(TBuilder, Func<OpenApiOperation,OpenApiOperationTransformerContext,CancellationToken,Task>) método de extensão.

    Antes:

    using Microsoft.AspNetCore.OpenApi;
    
    var builder = WebApplication.CreateBuilder();
    var app = builder.Build();
    
    app.MapGet("/weather", () => ...)
       .WithOpenApi(operation =>
       {
           // Per-endpoint tweaks
           operation.Summary     = "Gets the current weather report.";
           operation.Description = "Returns a short description and emoji.";
           return operation;
       });
    
    app.Run();
    

    Depois:

    using Microsoft.AspNetCore.OpenApi;
    
    var builder = WebApplication.CreateBuilder();
    var app = builder.Build();
    
    app.MapGet("/weather", () => ...)
       .AddOpenApiOperationTransformer((operation, context, ct) =>
       {
           // Per-endpoint tweaks
           operation.Summary     = "Gets the current weather report.";
           operation.Description = "Returns a short description and emoji.";
           return Task.CompletedTask;
       });
    
    app.Run();
    
  • Se você usou Swashbuckle para geração de documentos, use a IOperationFilter API.

  • Se você usou NSwag para geração de documentos, use a IOperationProcessor API.

APIs afetadas