Scalar API文档替换Swagger

server/2024/11/14 7:36:47/

Github:https://github.com/scalar/scalar

Nuget:Scalar.AspNetCore

环境:Net9

启用Scalar

if (app.Environment.IsDevelopment())
{app.MapScalarApiReference(opt =>{opt.DarkMode = false;}); // http://ip:port/scalar/v1app.MapOpenApi();
}

Program.cs

public class Program
{public static void Main(string[] args){var builder = WebApplication.CreateBuilder(args);// Add services to the container.builder.Services.AddControllers();// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapibuilder.Services.AddOpenApi();builder.Services.AddOpenApi(opt =>{opt.AddDocumentTransformer<BearerSecuritySchemeTransformer>();});var app = builder.Build();// Configure the HTTP request pipeline.if (app.Environment.IsDevelopment()){app.MapScalarApiReference(opt =>{opt.DarkMode = false;}); // http://ip:port/scalar/v1app.MapOpenApi();}app.UseHttpsRedirection();app.UseAuthorization();app.MapControllers();app.Run();}public sealed class BearerSecuritySchemeTransformer(IAuthenticationSchemeProvider authenticationSchemeProvider) : IOpenApiDocumentTransformer{public async Task TransformAsync(OpenApiDocument document, OpenApiDocumentTransformerContext context, CancellationToken cancellationToken){var authenticationSchemes = await authenticationSchemeProvider.GetAllSchemesAsync();if (authenticationSchemes.Any(authScheme => authScheme.Name == "Bearer")){// Add the security scheme at the document levelvar requirements = new Dictionary<string,OpenApiSecurityScheme>{["Bearer"] = new OpenApiSecurityScheme{Type = SecuritySchemeType.Http,Scheme = "bearer", // "bearer" refers to the header name hereIn = ParameterLocation.Header,BearerFormat = "Json Web Token"}};document.Components ??= new OpenApiComponents();document.Components.SecuritySchemes = requirements;// Apply it as a requirement for all operationsforeach (var operation in document.Paths.Values.SelectMany(path => path.Operations)){operation.Value.Security.Add(new OpenApiSecurityRequirement{[new OpenApiSecurityScheme{Reference = new OpenApiReference{Id = "Bearer",Type = ReferenceType.SecurityScheme}}] = Array.Empty<string>()});}}}}
}


http://www.ppmy.cn/server/141803.html

相关文章

osqp相关库的安装

规划或者控制和osqp库&#xff08;非线性求解器&#xff09;联系比较紧密&#xff0c;这里主要对osqp涉及到的库进行整理&#xff1a; git clone --recursive -b release-0.6.3 https://github.com/oxfordcontrol/osqp.git cd osqp mkdir build && cd build cmake .. …

Git 时想要放弃当前的 commit 操作

如果你在使用 Git 时想要放弃当前的 commit 操作&#xff0c;有几种不同的方式可以选择&#xff0c;具体取决于你希望如何处理已经做出的更改。以下是一些常见的方法&#xff1a; ‌重置到之前的提交‌&#xff1a; 使用 git reset --soft HEAD~1 可以将 HEAD 指针回退到上一个…

类与实例

1 问题如何理解类与实例&#xff1f; 2 方法 类与实例 类(class)的概述&#xff1a;用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类是一类事物&#xff0c;实例是具体的一个事物。 编程与生活是相通的&#xff0…

Python Day4 内置类

Python基本数据类型-list-tuple-dict-set 数据类型表示方法特性list列表用方括号表示&#xff1a;[]list是一种有序的集合&#xff0c;可以随时添加和删除其中的元素。和C数组的区别就是类型可不同。tuple元组用圆括号表示&#xff1a;()和list相比唯一的差异在于元组是只读的…

Spring Boot编程训练系统:设计与实现要点

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 管理员对用户信息修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 题库资源管理 系统管理员可以对题库资源信息进行添加&#xff0c;修改&#xff0c;删除以及查询操作。具体界面如…

大数据时代的数据分析:策略、方法与实践

在大数据时代&#xff0c;数据分析已成为企业获取竞争优势的关键。然而&#xff0c;面对海量、多样化的数据&#xff0c;如何有效地进行处理和分析&#xff0c;以提取有价值的信息和洞察&#xff0c;成为了一个挑战。本文将探讨在大数据环境下进行有效数据分析的策略、方法&…

Spring Boot编程训练系统:核心特性与实现策略

3系统分析 3.1可行性分析 通过对本编程训练系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本编程训练系统采用SSM框架&#xff0c;JAVA作为开发语言&#…

SpringBoot参数注解

SpringBoot参数注解 常用参数注解 RequestParmPathVariableRequestHeaderCookieValueRequestbody 1.请求参数注解&#xff1a;RequestParm 用途&#xff1a;用于将方法参数绑定到URI查询参数或者表单参数。他可以帮助我们或者HTTP请求中的参数值并将其作为方法的参数进行处…