Scalar 是一个现代化的 OpenApi/Swgger 界面。
dotnet

# 快速开始

# 1. 安装 nuget 包

dotnet add package Scalar.AspNetCore

# 2. 在代码中添加 using

using Scalar.AspNetCore;

# 3. 在应用中使用

# 在.NET 9 项目中使用

如果未安装 Microsoft.AspNetCore.OpenApi 包,需要先进行安装:

dotnet add package Microsoft.AspNetCore.OpenApi

添加下列代码到你的 Program.cs 文件中即可:

builder.Services.AddOpenApi();
if (app.Environment.IsDevelopment())
{
    app.MapOpenApi();
    app.MapScalarApiReference();
}

# 在.NET 8 项目中使用

  • 需要配合 Swashbuckle:

    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    if (app.Environment.IsDevelopment())
    {
        app.UseSwagger(options =>
        {
            options.RouteTemplate = "openapi/{documentName}.json";
        });
        app.MapScalarApiReference();
    }
  • 或配合 NSwag 使用(NSwag 生成文档速度较快且会缓存生成的文件,推荐使用):
    如果未安装 NSwag,需要先安装 nuget 包:

    dotnet add package NSwag.AspNetCore

    代码中配置:

    builder.Services.AddOpenApiDocument(options =>
    {
        options.SchemaSettings.GenerateEnumMappingDescription = true;
    });
    if (app.Environment.IsDevelopment()) {
        app.UseOpenApi(options => {
            options.Path = "openapi/{documentName}.json";
        });
        app.MapScalarApiReference();
    }

# 4. 其他配置

MapScalarApiReference 方法包含一个配置参数以自定义 Scalar UI:

// Fluent API
app.MapScalarApiReference(options =>
{
    options
        .WithTitle("My custom API")
        .WithDarkMode(false) // 是否默认黑色主题
        .WithTheme(ScalarTheme.DeepSpace) // 设置主题
        .WithSidebar(false)
        .WithDefaultHttpClient(ScalarTarget.CSharp, ScalarClient.HttpClient)
        .WithPreferredScheme("ApiKey")
        .WithApiKeyAuthentication(x => x.Token = "my-api-key");
});
// Object initializer
app.MapScalarApiReference(options =>
{
    options.Title = "My custom API";
    options.Theme = ScalarTheme.Mars;
    options.ShowSidebar = false;
    options.DefaultHttpClient = new(ScalarTarget.CSharp, ScalarClient.HttpClient);
    options.Authentication = new ScalarAuthenticationOptions
    {
        PreferredSecurityScheme = "ApiKey",
        ApiKey = new ApiKeyOptions
        {
            Token = "my-api-key"
        }
    };
});

更多的配置可以参考 ScalarOptions.cs 类。

除此之外,还可以使用依赖注入的方式进行配置:

builder.Services.Configure<ScalarOptions>(options => options.Title = "My custom API");
// 或者
builder.Services.AddOptions<ScalarOptions>().BindConfiguration("Scalar");

# 参考

Scalar .NET API Reference Integration