在 .NET 9 中让您的 OpenAPI(Swagger)文档 UI 变得出色

        从 .NET 9 开始,默认模板中不再包含 Swagger UI webapi。虽然文档仍然包含在内,但现在通过调用MapOpenApi,UI 不再存在。很高兴,重新获得文档 UI 相对容易。但 UI 本来就很无聊,所以让我们来点更花哨的东西吧!

认识 Scalar
        假设我们已经通过dotnet new webapi命令创建了新的 .NET 9 API 项目。现在,为了获得新外观,我们将使用一个名为 Scalar 的库。我们需要为此安装它们的 nuget 包:

dotnet add package Scalar.AspNetCore

        由于我们已经在模板中有了AddOpenApi并MapOpenApi调用,剩下要做的就是映射 UI 页面,Scalar 调用ApiReference如下:

app.MapScalarApiReference();

        所以现在如果运行我们的 api 并打开路径,/scalar/v1我们应该会看到我们的新 UI!Scalar 带有 10 个内置主题,让我们研究一下它们

主题 2:默认
默认情况下,我们将获得主题#2,又称默认主题,如下所示:

        在我看来,该主题看起来比 Swagger UI 更酷、更现代,但当然,继续使用默认主题是很无聊的,让我们研究一下还有什么

        您可能还会注意到,除了默认的天气预报之外,还有几个端点,如果您想使用它们,这里是其余端点的代码:

app.MapPost("/weatherforecast", (WeatherForecast forecast) =>
{
    return forecast;
});

app.MapPut("/pets/{id}", (string id) =>
{
    return id;
});
app.MapDelete("/pets/{id}", (string id) =>
{
    return id;
});

主题 0:无
有趣的是,除了默认主题之外,我们还有一个None主题。为了进行实验,我们可以在不同的路线上提供几个主题。以下是我们如何将主题添加None到none/v1路线:

app.MapScalarApiReference(o => 
    o.WithTheme(ScalarTheme.None)
    .WithEndpointPrefix("none/{documentName}")
);

我们将看到以下内容:

        乍一看,它可能与默认主题完全相同。然而,面对面对比后,我似乎注意到主题None略浅一些。但我想,差异太小了,所以让我们继续搜索。

主题 1:另类

嗯,主题只是少了一些颜色。这绝对不是我所说的花哨。

主题三:月亮

        说实话,这是我最不喜欢的主题。虽然颜色不是标准的,但我也不会称其为花哨。对我来说,这些颜色给人一种不健康的感觉。我们去下一个吧!

主题四:紫色 

这一个比月亮更令人愉快,但仍然很无聊!下一个!

主题 5:日光化

        嗯……和月亮主题一样令人讨厌。该主题似乎只是通过添加一些令人不快的颜色使文本更难读。我们最终会得到更好的东西吗?

主题六:蓝色星球

        最后,来点有创意的东西。我很容易想象有人会选择这个主题。不过这不符合我的口味,我想我只是不太喜欢蓝色主题。

主题 7:土星

        你可能会问,这与默认主题有什么不同?好吧,将它们并排摆在一起,我可以向你保证,这是最黑的主题,所以如果你想要最大的对比度,这就是你的选择!

主题 8:开普勒

        嗯,又是一个蓝色主题,但颜色要深得多,我个人更喜欢这个。但仍然不够有趣。

主题 9:火星

        这是最鼓舞人心的主题。我想这将是 SpaceX 文档页面的完美主题。但是,对于常规 API,我担心它会很快饱和。我想为我的文档找到更通用的东西。

主题 10:深空

        这个主题也很有启发性,符合我的标准,既要花哨又要专业。尽管背景是一张图片,但它也给人一种简约的感觉。

额外的自定义
        Scalar 文档说他们也有经典布局,但我在他们的配置 API 中找不到该选项。(我尝试了他们所有的选项)。你可以做的是使用如下代码删除侧边栏和模型部分:

app.MapScalarApiReference(o => o
    .WithTheme(ScalarTheme.Mars)
    .WithModels(false)
    .WithSidebar(false)
    .WithEndpointPrefix("special/{documentName}")
);

        然而,它实际上只是删除了部分和侧边栏,而没有改变 UI 的任何其他部分,所以我没有发现删除有什么好处。所以我想这就是 Scalar 目前的全部内容。我们将看看他们未来是否会带来更多主题或更有意义的定制!

总结!
        使用 .NET 9 获得美观的 .NET OpenAPI UI 非常容易 — 只需添加Scalar并选择一个主题即可。我选择的主题将是Deep Space主题。主题看起来很有趣,但又不会太过奢华,这使其适合您经常使用的东西。

以下是我将添加到所有新 .NET 项目中的代码行:

app.MapScalarApiReference(o => o.WithTheme(ScalarTheme.DeepSpace));

希望本文能成为您自定义主题的参考。在评论中留下您最喜欢的主题,欢迎收藏、点赞 感谢!

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/486854.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Kimi开发自己的问答应用

概述 Kimi是大家常用的一个人工智能助手,本文使用Kimi开发文档,以node作为后端,开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手,擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任…

2024.12.09标准IO(作业)

1、使用这fscanf和fprintf两个函数实现文件的拷贝。 #include <myhead.h>int main(int argc, const char *argv[]) {//使用这fscanf和fprintf两个函数实现文件的拷贝FILE *fp1 fopen("./1.txt","r"); //打开被拷贝的文件1.txtif(NULL fp1){perror…

JK软考小程序上线啦

经过一段时间的题库整理和录入&#xff0c;JK软考小程序终于和大家见面了&#xff01; 扫描识别赶紧体验吧&#xff1a; JK软考是一款专门为准备软考的考生设计的移动学习工具。JK软考集成了丰富的软考题目资源&#xff0c;通过便捷的操作界面和多样化的功能&#xff0c;帮助考…

40分钟学 Go 语言高并发:负载均衡与服务治理

负载均衡与服务治理 一、知识要点总览 模块核心内容技术实现难度负载策略轮询、权重、最小连接数自定义负载均衡器中服务降级服务降级、熔断降级、限流降级Hystrix模式高熔断机制熔断器状态机、失败计数、自动恢复Circuit Breaker高限流设计令牌桶、滑动窗口、计数器Rate Lim…

LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略

LLMs之Agent之Lares&#xff1a;Lares的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;这篇博文介绍了 Lares&#xff0c;一个由简单的 AI 代理驱动的智能家居助手模拟器&#xff0c;它展现出令人惊讶的解决问题能力。 >> 背景痛点&#xff1a;每天都有新的…

Halcon 轮廓检测常用算子、原理及应用场景

一、引言 在机器视觉领域&#xff0c;轮廓检测是一项关键技术&#xff0c;它能够提取物体的边缘信息&#xff0c;从而实现物体的定位、识别、测量等多种功能。Halcon 作为一款强大的机器视觉软件库&#xff0c;提供了丰富的轮廓检测算子。本文将详细介绍 Halcon 中轮廓检测的常…

11.23[大数据]

PRO1:LSTM模型预测输出都是同一个值&#xff1f; 画出来的图像就是一条横线 这个搜了搜&#xff0c;原因可能有很多&#xff0c;但感觉最主要的原因极可能是激活函数选择不当&#xff0c;以及层的搭建不合适 原模型是 REF https://zhuanlan.zhihu.com/p/654325094 https:/…

TEA系列例题

解析 TEA 加密算法(C语言、python)&#xff1a;_tea加密-CSDN博客 CTF-RE 从0到N: TEA_tea加密原理-CSDN博客 1 字节 8 位 牢记密文的64位和密钥的128位,最好可以自己独立的写出tea解密代码 相当于密文是传入8个字符类型数据或者是2个整型数据, 密钥是16个字符数据或者4个…

[241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板

目录 X-CMD 发布 v0.4.15&#x1f4c3;Changelog&#x1f4e6; env|pkg&#x1fa9e; mirror&#x1f4d1; pb&#x1f3a8; theme|starship|ohmyposh&#x1f916; chat&#x1f4dd; man✅ 升级指南 X-CMD 发布 v0.4.15 &#x1f4c3;Changelog &#x1f4e6; env|pkg 新增…

SpringBoot【一】零基础入门 springboot 及 idea 搭建

一、前言 springboot是什么&#xff1f; Spring Boot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。用我的话来理解&#xff0…

【kotlin 】内联类(value class / inline class)

官方文档&#xff1a;https://kotlinlang.org/docs/inline-classes.html 注&#xff1a;inline class 关键字已经被废弃&#xff0c;取而代之的是value class。现在使用内联类需要定义类为value class&#xff0c;并使用JvmInline注解进行标注。 一、使用场景 有时候&#xff…

3D 生成重建023-DMV3D用扩散模型做3D生成大模型

3D 生成重建023-DMV3D用扩散模型做3D生成大模型 文章目录 0 论文工作1 论文方法2 实验效果 0 论文工作 这个论文提出了一种新的三维生成方法DMV3D&#xff0c;它利用基于Transformer 的大型三维重建模型对多视图扩散进行去噪处理。重建模型包含三平面NeRF表示&#xff0c;并能…

Linux - 进程等待和进程替换

进程等待 前面我们了解了如果父进程没有回收子进程, 那么当子进程接收后, 就会一直处于僵尸状态, 导致内存泄漏, 那么我们如何让父进程来回收子进程的资源. waitpid 我们可以通过 Linux 提供的系统调用函数 wait 系列函数来等待子进程死亡, 并回收资源. #include <sys/t…

【Redis】壹 —— Redis 介绍

文章目录&#xff1a; 前言 一、认识Redis 1. Redis 用途 作为数据库 作为流引擎 二、服务端高并发分布式结构演变 1. 单机架构 2. 应用数据分离架构 3. 应用服务集群架构 4. 读写分离 / 主从分离架构 5. 冷热分离 —— 引入缓存 6. 分库分表 7. 微服务架构 8. …

D88【python 接口自动化学习】- pytest基础用法

day88 pytest运行参数-q -s -v 学习日期&#xff1a;20241203 学习目标&#xff1a;pytest基础用法 -- pytest运行参数-q -s -v&pytest使用ini配置指定运行参数 学习笔记&#xff1a; pytest -q 说明&#xff1a;简化控制台的输出 pytest -q .\testcases\test_reques…

22 网络编程:Go 语言如何通过 RPC 实现跨平台服务

在上一讲中&#xff0c;我为你讲解了 RESTful API 的规范以及实现&#xff0c;并且留了两个作业&#xff0c;它们分别是删除和修改用户&#xff0c;现在我为你讲解这两个作业。 删除一个用户比较简单&#xff0c;它的 API 格式和获取一个用户一样&#xff0c;但是 HTTP 方法换…

java八股-流量封控系统

文章目录 请求后台管理的频率-流量限制流量限制的业务代码UserFlowRiskControlFilter 短链接中台的流量限制CustomBlockHandler 对指定接口限流UserFlowRiskControlConfigurationSentinelRuleConfig 请求后台管理的频率-流量限制 根据登录用户做出控制&#xff0c;比如 x 秒请…

AI给我们生活带来了哪些便利?

在21世纪的科技浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;如同一股不可阻挡的力量&#xff0c;正深刻地改变着我们的生活方式&#xff0c;从日常琐事到复杂决策&#xff0c;无一不渗透着AI的智慧之光。它不仅极大地提升了生活效率&#xff0c;还为我们开启了前所未…

在vue3里使用scss实现简单的换肤功能

实现的换肤功能&#xff1a;主题色切换、亮色模式和暗黑模式切换、背景图切换 主题色就是网站主色&#xff0c;可以配置到组件库上面&#xff1b;亮色模式又分为两种风格&#xff1a;纯白风格和背景图风格&#xff0c;不需要背景图的话可以删掉这部分逻辑和相关定义&#xff1b…

css实现圆周运动效果

在CSS中可以通过 keyframes 动画 和 transform 属性实现元素的圆周运动。以下是一个示例代码&#xff1a; 示例代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content…