.NET Core 9: Swashbuckle Kaldırılıyor, Microsoft OpenAPI Geliyor

NET Core 9'da önemli bir yenilik duyuruldu: Swashbuckle.AspNetCore kütüphanesi varsayılan olarak kaldırılıyor. Artık API dokümantasyonu için Microsoft'un kendi OpenAPI kütüphanesi kullanılacak.

Neden Bu Değişiklik?

  • Daha İyi Performans: Microsoft’un OpenAPI kütüphanesi, .NET 9 ile daha hızlı ve framework'e entegre bir şekilde çalışacak.
  • Kolay Kullanım: Kurulum ve yapılandırma işlemleri sadeleşiyor, OpenAPI belgelerini yönetmek daha kolay hale geliyor.

Ne Yapmalı?

Swashbuckle kullanan projeleriniz varsa, geçiş planı yapın ve Microsoft'un yeni OpenAPI desteğini kullanmaya hazırlanın. Bu, API dokümantasyonunuzu modernize etmek için harika bir fırsat!

Daha fazla detay ve örnekleri takip edin, projelerinizi .NET 9'un getirdiği bu yeniliklerle güncel tutun!

Haydi hello word yapalım; 

(Aşağıdaki adımları tamamlandıktan sonra https://localhost:44327/scalar/v1 adresindsen görüntü alabilirsiniz.)

OpenApiExample.csproj;

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net9.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings> 
  </PropertyGroup>

	<PropertyGroup>
		<OpenApiGenerateDocumentsOnBuild>true</OpenApiGenerateDocumentsOnBuild>
		<OpenApiDocumentsDirectory>.\</OpenApiDocumentsDirectory>
	</PropertyGroup>
	
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.0" />
    <PackageReference Include="Microsoft.Extensions.ApiDescription.Server" Version="9.0.0">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
    <PackageReference Include="Scalar.AspNetCore" Version="1.2.39" />
  </ItemGroup>

</Project>

 

Program.cs;

using Scalar.AspNetCore;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers();

builder.Services.AddOpenApi();

var app = builder.Build();

app.MapOpenApi();
app.MapScalarApiReference(options => 
    {
        options.DefaultFonts = false;
   });

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();