Sdílet prostřednictvím


Vyřazení metody rozšíření WithOpenApi

Metody WithOpenApi jsou zastaralé v .NET 10. Vyvolání těchto metod teď vytvoří diagnostiku v čase kompilace ASPDEPR002 a standardní Obsolete upozornění, které uvádí:

Funkce WithOpenApi je zastaralá a bude odebrána v budoucí verzi. Další informace najdete na adrese https://aka.ms/aspnet/deprecate/002.

Verze byla představena

.NET 10 Preview 7

Předchozí chování

Dříve jste mohli použít metodu WithOpenApi rozšíření bez upozornění:

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

Nové chování

Počínaje rozhraním .NET 10 vytvoří použití WithOpenApi metody rozšíření upozornění kompilátoru:

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

Volání se ale stále zkompiluje a spustí.

Typ zásadní změny

Tato změna může ovlivnit kompatibilitu zdroje.

Důvod změny

WithOpenApi duplikované funkce teď poskytuje integrovaný kanál generování dokumentů OpenAPI. Vyřazení zjednodušuje povrch rozhraní API a připravuje se na jeho případné odstranění.

Odeberte .WithOpenApi() volání z kódu.

  • Pokud jste použili Microsoft.AspNetCore.OpenApi ke generování dokumentů, použijte metodu AddOpenApiOperationTransformer<TBuilder>(TBuilder, Func<OpenApiOperation,OpenApiOperationTransformerContext,CancellationToken,Task>) rozšíření.

    Před:

    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();
    

    Po:

    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();
    
  • Pokud jste použili Swashbuckle ke generování dokumentů, použijte IOperationFilter rozhraní API.

  • Pokud jste použili NSwag ke generování dokumentů, použijte IOperationProcessor rozhraní API.

Ovlivněná rozhraní API