Bagikan melalui


Penghentian metode ekstensi WithOpenApi

Metode WithOpenApi tidak digunakan lagi dalam .NET 10. Memanggil metode ini sekarang menghasilkan diagnostik ASPDEPR002 waktu kompilasi dan peringatan standar Obsolete yang menyatakan:

WithOpenApi tidak digunakan lagi dan akan dihapus dalam rilis mendatang. Untuk informasi selengkapnya, kunjungi https://aka.ms/aspnet/deprecate/002.

Versi yang diperkenalkan

.NET 10 Pratinjau 7

Perilaku sebelumnya

Sebelumnya, Anda dapat menggunakan WithOpenApi metode ekstensi tanpa peringatan apa pun:

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

Perilaku baru

Mulai dari .NET 10, menggunakan WithOpenApi metode ekstensi menghasilkan peringatan kompilator:

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

Namun, panggilan masih mengkompilasi dan menjalankan.

Jenis perubahan yang memutus kompatibilitas

Perubahan ini dapat memengaruhi kompatibilitas sumber .

Alasan perubahan

WithOpenApi fungsionalitas duplikat sekarang disediakan oleh alur pembuatan dokumen OpenAPI bawaan. Menghentikan penggunaannya menyederhanakan permukaan API dan mempersiapkan penghapusan akhirnya.

Hapus .WithOpenApi() panggilan dari kode Anda.

  • Jika Anda menggunakan Microsoft.AspNetCore.OpenApi untuk pembuatan dokumen, gunakan AddOpenApiOperationTransformer<TBuilder>(TBuilder, Func<OpenApiOperation,OpenApiOperationTransformerContext,CancellationToken,Task>) metode ekstensi.

    Sebelum:

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

    Sesudah:

    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();
    
  • Jika Anda menggunakan Swashbuckle untuk pembuatan dokumen, gunakan IOperationFilter API.

  • Jika Anda menggunakan NSwag untuk pembuatan dokumen, gunakan IOperationProcessor API.

API yang terpengaruh