Scalar 是一个现代化的 OpenApi/Swgger 界面。
# 快速开始
# 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"); |