« Scalar » : différence entre les versions
Apparence
Ligne 83 : | Ligne 83 : | ||
{ | { | ||
options | options | ||
.WithTitle(" | .WithTitle("MyApp API Reference") | ||
.WithTheme(ScalarTheme.Solarized) | .WithTheme(ScalarTheme.Solarized) | ||
.WithClientButton(false) | .WithClientButton(false) |
Version du 3 avril 2025 à 09:40
Links
ASP.NET Core 9 integration
dotnet add package Scalar.AspNetCore |
Program.cs |
builder.Services.AddOpenApi();
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
// add the following lines
app.MapScalarApiReference(options =>
{
options
.WithTitle("MyApp API Reference")
.WithTheme(ScalarTheme.Solarized)
.WithClientButton(false);
//.WithDefaultOpenAllTags(true)
});
}
|
URL: http://localhost:5000/scalar
Properties/launchSettings.json |
{
"profiles": {
"http": {
"launchBrowser": true,
"launchUrl": "http://localhost:5000/scalar",
"applicationUrl": "http://localhost:5000"
}
}
}
|
OAuth 2 authentication
OpenApiConfiguration.cs |
public static class OpenApiConfiguration
{
private const string oAuth2Scheme = "oauth2";
public static IMvcBuilder ConfigureOpenApi(this IMvcBuilder builder, AzureAdConfiguration configuration)
{
builder.Services.AddOpenApi(options =>
{
options.AddDocumentTransformer((document, context, cancellationToken) =>
{
document.Components ??= new OpenApiComponents();
document.Components.SecuritySchemes.Add(oAuth2Scheme, new OpenApiSecurityScheme
{
Type = SecuritySchemeType.OAuth2,
Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = new Uri($"https://login.microsoftonline.com/{configuration.TenantId}/oauth2/v2.0/authorize"),
TokenUrl = new Uri($"https://login.microsoftonline.com/{configuration.TenantId}/oauth2/v2.0/token"),
Scopes = new Dictionary<string, string>
{
{ $"{configuration.ClientId}/contributor offline_access", "API access" }
}
}
}
});
return Task.CompletedTask;
});
});
return builder;
}
public static void ConfigureOAuthAuthenticationForScalar(this WebApplication app, AzureAdConfiguration configuration)
{
if (app.Environment.IsDevelopment())
{
app.MapScalarApiReference(options =>
{
options
.WithTitle("MyApp API Reference")
.WithTheme(ScalarTheme.Solarized)
.WithClientButton(false)
.WithPreferredScheme(oAuth2Scheme)
.WithOAuth2Authentication(oauth =>
{
oauth.ClientId = configuration.SwaggerClientId;
oauth.Scopes = [$"{configuration.ClientId}/contributor offline_access"];
});
});
}
}
}
|