让.NET9中的OpenAPI有脸面

news/2025/3/1 22:18:50/文章来源:https://www.cnblogs.com/axzxs2001/p/18745519

  前一篇简单说了一下怎么在项目中引入新的OpenAPI,本篇再进一步,看看怎么引入UI界面。

  主要做法是通过添加/scalar/openapidemo这个静态页面实现,在页面中,引入了scalar的js,关于scalar,请详看https://scalar.com。其他信息与上一篇介绍的差不多。代码如下:

using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging.Configuration;
using Microsoft.OpenApi.Extensions;
using Microsoft.OpenApi.Interfaces;
using Microsoft.OpenApi.Models;var builder = WebApplication.CreateBuilder(args);builder.Services.AddOpenApi("openapidemo", opt =>
{opt.UseTransformer((openApiDoc, context, c) =>{openApiDoc.Info = new OpenApiInfo{Version = "v1.1.1",Title = "测试API",Description = "本项是测试.NET自带的OpenAPI。"};return Task.CompletedTask;});opt.UseOperationTransformer((o, c, c1) =>{Console.WriteLine("DocumentName:" + opt.DocumentName);return Task.CompletedTask;});
});
var app = builder.Build();
app.MapOpenApi();
app.MapGet("/scalar/{documentName}", (string documentName) => Results.Content($$"""
              <!doctype html><html><head><title>Scalar API Reference -- {{documentName}}</title><meta charset="utf-8" /><metaname="viewport"content="width=device-width, initial-scale=1" /></head><body><scriptid="api-reference"data-url="/openapi/{{documentName}}.json"></script><script>var configuration = {theme: 'purple',}              document.getElementById('api-reference').dataset.configuration =JSON.stringify(configuration)
</script><script src="https://cdn.jsdelivr.net/npm/@scalar/api-reference"></script></body></html>""", "text/html")).ExcludeFromDescription();
app.MapGet("/order", () =>
{return new Order(){OrderNo = "20210901",Amount = 100,OrderDate = DateTime.Now};
});
app.MapPost("/order", (Order order) =>
{return new OkResult();
});
app.Run();/// <summary>
/// 订单
/// </summary>
public class Order
{/// <summary>/// 订单编号/// </summary>public string OrderNo { get; set; }/// <summary>/// 订单金额/// </summary>public decimal Amount { get; set; }/// <summary>/// 订单日期/// </summary>public DateTime OrderDate { get; set; }}

  这时,通过访问http://localhost:5287/scalar/openapidemo,就可以查看可视见的API信息了,主界面如下:

  order的get请求:

       

  order的post请求:

   order的post方法的Test Request:

   使用Scalar最大好处是它内置了很多咱语言的调用api的方式,这样可以方便不同的对接人,复制粘贴,拿走不谢,简单快捷。

  文章来源微信公众号

  想要更快更方便的了解相关知识,可以关注微信公众号 

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

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

相关文章

.NET9 中不一样的OpenAPI

在.NET9的第4个预览版里,微软带来了OpenAPI,需要引用Microsoft.AspNetCore.OpenApi,如果想生成本地的API描述文件,需要引用Microsoft.Extensions.ApiDescription.Server。下面是项目文件:<Project Sdk="Microsoft.NET.Sdk.Web"><PropertyGroup><…

2025/2/22课堂记录

dp,树上依赖背包,树上dp,多叉树转二叉树,愚蠢的矿工,宝藏,状压,猛兽军团,国王目录愚蠢的矿工 国王(猛兽军团)愚蠢的矿工这网页稍微有点乱,不过凑合凑合还能看,就是没法提交了而已 首先看到的第一眼,感觉是树上依赖背包 毕竟要挖到某一个节点的宝藏要之前知道根节点…

【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作

问题描述 在使用Azure上的存储服务 Storage Account 的时候,有时需要代替 它原本提供的域名进行访问,比如默认的域名为:mystorageaccount.blob.core.chinacloudapi.cn, 想转变为 myservice.file.com 。如果使用App Service作为反向代理,我们现在有如下三个疑问: 第一:如…

大胆点!你猜DeepSeek的利润率有多高?

这种一周真是热闹啊,DeepSeek开源周,连续五天(2025年2月24日至28日)开源了5个核心技术项目,覆盖AI模型训练、推理优化、文件系统等多个领域,在今天还放出来了One more thing,直接把自己的利润率放出来了(真不拿用户当外人,哈哈) 接下来让我们一起来看看开源周都带来了…

通过网盘分享的文件:Oracle Database 12c linux版本 安装包

https://pan.baidu.com/s/14n1el1C0v1kbaHpDkw9i6w?pwd=1234 提取码: 1234

CountDownLatch的countDown()方法的底层源码

一、CountDownLatch的构造方法// 创建倒数闩,设置倒数的总数State的值CountDownLatch doneSignal = new CountDownLatch(N);二、countDown() 方法的作用 countDown() 方法的主要作用是将 CountDownLatch 的内部计数器减一。如果计数器减到零,则会唤醒所有等待的线程 三、coun…

论文+1

1.2 研究目标本研究旨在解决微服务架构中质量属性冲突和评估方法缺失的问题。具体目标如下:构建可量化的质量属性评估指标体系:通过深入分析微服务架构的特点和业务需求,明确性能、可用性、安全性等关键质量属性的量化指标,为后续的评估和优化提供准确的数据支持。 设计基于…

2.28 AI课堂训练测试

老师要求我们用指令训练Ai完成我们开学测试的代码,锻炼我们的业务逻辑 开学测试要求:请设计一个仓储管理系统原型系统,该系统支持多个仓库的设立。统一设立物资台账,物资台账需包含物资编码、物资名称、规格、材质、供应商、品牌、物资分类,用户可以自定义物资的物资分类。…

Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!

Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来! 1. 优势介绍 Obsidian 是一款强大的本地知识管理软件,它像一个积木盒,让你用 Markdown 笔记搭建自己的知识宇宙。通过 双链笔记,你可以将不同的想法、灵感和信息连接起来,构建一个属于你自己的知识网络…