Compartilhar via


Substituiçã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 indica:

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

Versão introduzida

.NET 10 Versão Prévia 7

Comportamento anterior

Anteriormente, você poderia 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 WithOpenApi método de extensão produz um aviso do compilador:

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

No entanto, a chamada ainda é compilada e executada.

Tipo de mudança disruptiva

Essa alteração pode afetar a compatibilidade da origem.

Motivo da alteração

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

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

  • Se você usou Microsoft.AspNetCore.OpenApi para a geração de documentos, use o método de AddOpenApiOperationTransformer<TBuilder>(TBuilder, Func<OpenApiOperation,OpenApiOperationTransformerContext,CancellationToken,Task>) 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 a geração de documentos, use a IOperationFilter API.

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

APIs afetadas