Last active
June 11, 2025 21:02
-
-
Save dj-nitehawk/c7052f01f3f650e67fb6782c84d3b5f0 to your computer and use it in GitHub Desktop.
API Visualization with Scalar
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using FastEndpoints.Swagger; | |
using Scalar.AspNetCore; //dotnet add package Scalar.AspNetCore | |
var bld = WebApplication.CreateBuilder(args); | |
bld.Services | |
.AddFastEndpoints() | |
.SwaggerDocument(); //define a swagger doc - v1 by default | |
var app = bld.Build(); | |
app.UseFastEndpoints(); //must come before the UseOpenApi() call | |
if (app.Environment.IsDevelopment()) | |
{ | |
//scalar by default looks for the swagger json file here: | |
app.UseOpenApi(c => c.Path = "/openapi/{documentName}.json"); | |
app.MapScalarApiReference(); | |
} | |
app.Run(); | |
//scalar ui can be accessed at: http://localhost:{port}/scalar/v1 |
I create another alternative. Example
don't think that's gonna work: FastEndpoints/FastEndpoints#906 (comment)
So I have discovered that if you want the document name to be different, you must specify the document name in the MapScalarApiReference
options. This is seemingly because Scalar defaults to "v1". Please let me know if there is a smoother way to do this.
Example:
const string openApiDocName = "my-api-v1";
app.UseOpenApi(options =>
{
options.Path = "/openapi/{documentName}.json";
});
app.MapScalarApiReference(
"/api-reference",
options => options
.WithTheme(ScalarTheme.Kepler)
.AddDocument("v1", "My API v1", $"/openapi/{openApiDocName}.json"));
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks, @dj-nitehawk! I think it's a good time to upgrade the FastEndpoints documentation and mention Scalar UI.