当前位置: 首页 > article >正文

.NET 9 中的 WebAPI 文档 重新添加Swagger或改用Scalar

示例代码:https://download.csdn.net/download/hefeng_aspnet/90408226 

        随着.NET 9的发布,ASP.NET Core 团队决定删除内置的 Swagger 支持(Swashbuckle),主要原因如下:

        1、维护挑战:Swashbuckle 不再积极维护、缺乏更新并且没有 .NET 8 的官方版本。
本机元数据支持:ASP.NET Core 现在包含内置元数据来描述 API,从而减少了对外部工具的需求。
        2、专注于 OpenAPI:微软正在增强对 OpenAPI 的原生支持,以Microsoft.AspNetCore.OpenApi提供无缝的文档生成。
        3、现代替代品:.http 文件和Visual Studio 中的Endpoints Explorer等工具允许进行测试和探索,而无需依赖第三方包。
        4、鼓励创新:默认删除 Swashbuckle 可以鼓励社区驱动的工具更好地满足开发人员的需求。

该项目展示了如何利用现代替代方案来适应这些变化,并提供了实际示例来帮助您入门。

本文和项目包含的内容

为了帮助开发人员过渡到ASP.NET Core 9的新方向,此存储库包含三个示例:

        1、使用 .http 文件:一种在Visual Studio和VS Code中测试 API 的轻量级、现代方法。
        2、重新添加 Swagger 支持:为那些仍然想使用 Swagger(Swashbuckle)进行 API 文档编写的人提供的示例。
        3、介绍 Scalar:Swagger 的强大替代品,具有附加功能、现代 UI 和丰富的 API 探索功能。

使用 .http 文件

.http 文件允许您直接从编辑器定义和测试HTTP 请求,例如带有REST 客户端扩展的Visual Studio Code或Visual Studio。

为什么是.http 文件?

        1、轻量、简单、易于阅读。
        2、允许快速测试端点。
        3、支持Visual Studio Code中的变量和响应重用。

示例:一个简单的 .http 文件

@hostaddress = https://localhost:5555/calculation 
@value1 = 20 
@value2 = 22 

### Add Request 
# @name add 
POST {{hostaddress}}/add 
Content-Type: application/json 


  "value1": {{value1}}, 
  "value2": {{value2}} 

### Reuse Response 
@addresult = {{add.response.body.result}} 

POST {{hostaddress}}/add 
Content-Type: application/json 


  "value1": {{addresult}}, 
  "value2": {{addresult}} 
}

笔记:

在Visual Studio Code中,REST 客户端扩展支持变量和响应重用(例如add.response.body.result)。

在Visual Studio中,响应变量尚不受支持,但您仍然可以执行请求并有效地调试。

Visual Studio 中的示例 UI:

重新添加 Swagger 支持

虽然 Swagger 已从 .NET 9 中删除,但您可以使用 Swashbuckle 轻松地将其添加回来。

添加Swagger的步骤:

安装所需的 NuGet 包:

dotnet add package Microsoft.AspNetCore.OpenApi 
dotnet add package Swashbuckle.AspNetCore

更新Program.cs:

builder.Services.AddSwaggerGen(options =>
{
    options.SwaggerDoc("v1", new OpenApiInfo
    {
        Title = "Sample API",
        Version = "v1",
        Description = "API to demonstrate Swagger integration."
    });
});

// some code

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

Swagger UI 预览:

Swagger 提供了一个清晰的界面来探索和测试您的 API 端点。

Scalar 简介:一种现代替代方案

Scalar是一个开源 API 平台,它将 API 文档和测试提升到了一个新的水平。它提供了现代功能、直观的用户体验和时尚的界面(为真正的工程师提供暗黑模式!)。

为什么要使用Scalar?

        1、现代 REST 客户端:无缝测试并与 API 交互。
        2、漂亮的 API 参考:生成干净、可读的 API 文档。
        3、代码生成:使用 25 种以上的语言或框架生成示例。

Scalar示例输出

C# 示例:

using System.Net.Http.Headers;

var client = new HttpClient();
var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("https://localhost:5555/api/v1/time"),
};
using (var response = await client.SendAsync(request))
{
    response.EnsureSuccessStatusCode();
    var body = await response.Content.ReadAsStringAsync();
    Console.WriteLine(body);
}

JavaScript/jQuery 示例:

const settings = { 
  async: true, 
  crossDomain: true, 
  url: 'https://localhost:5555/api/v1/time', 
  method: 'GET', 
  headers: {} 
}; 

$.ajax(settings).done(function (response) { 
  console.log(response); 
});

将 Scalar 添加到您的项目中

安装 Scalar NuGet 包:

dotnet add package Scalar.AspNetCore

更新Program.cs:

if (app.Environment.IsDevelopment())
{
    app.MapScalarApiReference();
}

Scalar UI 预览 

概括

借助 .NET 9,Microsoft 将重点转移到本机 OpenAPI 支持,从而消除了对 Swashbuckle 的依赖。但是,借助.http 文件、Swagger和Scalar,您可以使用强大的工具:

        1、使用.http 文件进行轻量级 API 测试。
        2、重新整合Swagger以获得熟悉的交互式文档。
        3、探索Scalar,获得具有高级功能的现代且功能丰富的替代方案。

源代码

https://download.csdn.net/download/hefeng_aspnet/90408226

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


http://www.kler.cn/a/612985.html

相关文章:

  • 如何用AI技术轻松生成高质量PPT,节省时间提高效率
  • 【Linux】深度解析Linux进程间通信:匿名管道原理、实战进程池与高频问题排查。
  • vue3为什么不需要时间切片
  • 将任何网站变成独立的桌面应用 开源免费 Tuboshu
  • IvorySQL 初始化(initdb)过程深度解析
  • UniApp开发多端应用——流式语音交互场景优化
  • 分布式ID生成器:雪花算法原理与应用解析
  • Spring-CacheKey 设置注意事项
  • 正则表达式-万能表达式
  • PDF 文本提取为何如此困难?– 原因和解决方案
  • string模拟实现-C++
  • 数据结构之约瑟夫环的问题
  • Causal Effect Inference withDeep Latent-Variable Models
  • 聚焦交易能力提升!EagleTrader 模拟交易系统打造交易成长新路径
  • LabVIEW从需求快速开发的方法
  • 5-管理员-维护权限
  • 【PyTorch】
  • JAVASE知识梳理(一)
  • Pyside6 开发 使用Qt Designer
  • G i t