在 .NET 9 的更新中,微软增强了原生 OpenAPI。这一变化表明 .NET 正在更加拥抱开放标准,同时让开发者体验更加轻松高效。本文将探讨为何进行这一更改、OpenAPI 的优势,以及如何在 .NET 9 中使用 OpenAPI。


为什么不再内置 Swagger?

1. 标准化的需求

Swagger 是 OpenAPI 规范的早期实现,虽然功能强大,但它逐渐被视为工具集的一部分,而非行业标准。转向原生 OpenAPI 支持意味着 .NET 正式采用更具广泛认可的标准,从而提升与其他生态工具的兼容性。

2. 简化依赖关系

移除对 Swagger-specific 组件的依赖,使框架更简洁并降低复杂性。开发者可以直接依赖 OpenAPI 规范,而不是被局限在 Swagger 工具集内。

3. 灵活性与互操作性

OpenAPI 作为开放标准,被广泛支持于各类工具和平台(如 Postman、API 网关、自动化测试工具等)。这使得 .NET 应用程序更容易集成到多样化的技术栈中。


如何在 .NET 9 中使用 OpenAPI?

.NET 9 提供了对 OpenAPI 的原生支持,通过简单的配置即可生成 OpenAPI 文档并集成可视化工具,如 Swagger UI 和 Scalar API Reference。

以下是配置步骤:

1. 添加必要的服务

Program.cs 文件中,调用 AddOpenApi 方法注册 OpenAPI 支持。

2. 映射 OpenAPI 文档

使用 MapOpenApi 映射 OpenAPI 文档路径,便于开发和测试。

3. 集成可视化工具

通过 UseSwaggerUIMapScalarApiReference 添加交互式文档界面。

  • UseSwaggerUI 需要安装 Swashbuckle.AspNetCore.SwaggerUi 包。

    dotnet add package Swashbuckle.AspNetCore.SwaggerUi
  • MapScalarApiReference 需要安装 Scalar.AspNetCore 包。

    dotnet add package Scalar.AspNetCore

示例代码

以下代码展示了如何在 .NET 9 中配置和使用 OpenAPI:

using Scalar.AspNetCore;

namespace WebApplication2
{
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args); // 注册控制器和 OpenAPI 服务
builder.Services.AddControllers();
builder.Services.AddOpenApi(); var app = builder.Build(); // 开发环境中启用 OpenAPI 文档和可视化工具
if (app.Environment.IsDevelopment())
{
app.MapOpenApi(); // 映射 OpenAPI 文档路径
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/openapi/v1.json", "v1"); // 设置文档路径
});
app.MapScalarApiReference(); // 映射其他参考路径
} app.UseAuthorization(); // 映射控制器
app.MapControllers(); app.Run();
}
}
}

示例解析

  1. 服务注册

    builder.Services.AddOpenApi();

    此行代码启用了 OpenAPI 支持。

  2. 映射文档

    app.MapOpenApi();

    这将 OpenAPI 文档映射到默认路径 /openapi/v1.json

  3. 增加文档可视化

    app.UseSwaggerUI(options =>
    {
    options.SwaggerEndpoint("/openapi/v1.json", "v1");
    });
    app.MapScalarApiReference();

    这将增加swagger和scalar两种可视化工具。

  4. 访问可视化工具

    • SwaggerUI 需要访问/swagger。

    • Scalar 需要访问/scalar/v1。

    这两个工具都可以用于可视化 OpenAPI 文档,提供交互式界面以测试 API。


总结

.NET 9 中移除内置 Swagger,增加 OpenAPI 支持,是一个符合行业趋势的重要改进。这一变化不仅提升了开发体验,也使得 .NET 应用能够更高效地与其他工具和平台协作。

通过 OpenAPI 的原生支持和灵活的可视化工具选择,开发者可以更轻松地生成文档、测试接口和集成服务。使用示例代码,立即开始在 .NET 9 中体验 OpenAPI 的强大功能吧!

.NET 9 增强 OpenAPI 规范的更多相关文章

  1. OPENAPI规范Swagger

    OPENAPI规范 是一种规范,Swagger是一种工具,Swagger帮我们使用OPENAPI更具体更完善,更好. 博客1:https://app.swaggerhub.com/help/index ...

  2. 【API规范】OpenAPI规范

    OpenAPI规范 openAPI 3.0_百度搜索 OpenAPI Specification 2.0 - CSDN博客 APP相关_API 列表_OpenAPI 2.0_开发指南_移动推送-阿里云 ...

  3. OpenAPI规范入门

    由于API对于我们的软件运行方式至关重要,因此记录我们的API对于确保我们大型IT组织中的每个人都了解正在发生的事情至关重要,这就是我们使用OpenAPI来帮助记录API规范的原因. 在本文中,我将向 ...

  4. OpenAPI 3.0 规范-食用指南

    概述 OpenAPI 3.0 规范由 8 个根对象组成: openapi info servers paths components security tags externalDocs OpenAP ...

  5. 关于HTML与CSS编写规范

    之前一直没有注意到这一点,因为当看到一些优秀的网站的源代码的时候,打开他们引用的css文件格式看起来也并非规范.但幸运的昨天偶然间看到的通过增强CSS规范可读性可优化页面性能,于是下决心痛改前非. 我 ...

  6. REST easy with kbmMW #20 – OpenAPI and Swagger UI

    即将推出的kbmMW更新不仅是一些bug修正,同时将包含一个新的主要功能:客户端存根生成器框架. 那什么是客户端存根生成器框架呢? 他是一个基于kbmMW smart services,可以生成由各种 ...

  7. OpenAPI初体验

    问题的一开始源于客户和服务部门抱怨我的REST API文档写得不好,然后又了解到 django rest framework 利用 coreapi 能自动生成文档,再就是看到 swagger.io 上 ...

  8. 基于OAS设计可扩展OpenAPI

    前言 随着互联网行业的兴起,开发模式已逐步转换为微服务自治:小团队开发微服务,然后通过Restful接口相互调用.开发者们越来越渴望能够使用一种“官话”进行流畅的沟通,甚至实现多种编程语言系统的自动化 ...

  9. 使用OpenAPI构建更智能的API

    像OpenAPI这样的API描述规范是一个关键工具,您应该尽可能地将其好好掌握,记录和执行API的工作由计算机和开发人员完成:OpenAPI 3.0现在允许额外的表现力,可以让机器为我们做更多有用的工 ...

  10. openapi and light-4j

    light-4j项目支持openapi规范,本文介绍一下参照相关demo做的上传功能. openapi.yaml,按照规范编写内容,/openapi/swagger可以查看对应的swagger页面,A ...

随机推荐

  1. 1. react项目【前端】+C#【后端】从0到1

    1.创建前端基础框架 1.1 前端创建 软件: 1.1.1 npx create-react-app pc ps:pc 是文件名 : 1.1.2 npm start 启动项目 2.创建后端基础框架 软 ...

  2. vue2 + webpack 分析报告 report == webpack-bundle-analyzer

    packjson.js 配置 "build-report":"vue-cli-service build --report", 执行 : npm run bui ...

  3. k8s的pod的理解

    pod共享相同的IP地址和端口空间. 这意味着在同一 pod中的容器运行的 多个进程需要注意不能绑定到相同的端口号, 否则会导致端口冲突, 但这只涉及同一pod中的容器. 由于每个pod都有独立的端口 ...

  4. 原子操作类Atomic

    原子操作的基本数据类型 基本类型的原子操作主要有这些: AtomicBoolean:以原子更新的方式更新 boolean: AtomicInteger:以原子更新的方式更新 Integer; Atom ...

  5. Johnson全源最短路:负权化正权,最后减去势能差

    Johnson全源最短路:负权化正权,最后减去势能差 (1)建虚点0,add(0,i,0),跑st=0的单源最短路hi (2)e[i].w+=h[u]-h[v] ​ Q:为何这样不会得到错误答案? ​ ...

  6. php如何解决高并发

    PHP交流群  656679284  为PHP广大爱好者提供技术交流,有问必答,相互学习相互进步! 1.应用和静态资源分离 将静态资源(js,css,图片等)放到专门的服务器中. 2.页面缓存 将应用 ...

  7. 非加密哈希函数库-SpookyHash

    地址: https://burtleburtle.net/bob/hash/spooky.html SpookyHash is a public domain noncryptographic has ...

  8. 一文彻底弄懂JUC工具包的CountDownLatch的设计理念与底层原理

    CountDownLatch 是 Java 并发包(java.util.concurrent)中的一个同步辅助类,它允许一个或多个线程等待一组操作完成. 一.设计理念 CountDownLatch 是 ...

  9. 一款WPF开发的B站视频下载开源项目

    更多开源项目请查看:一个专注推荐优秀.Net开源项目的榜单 今天给推荐一款C#开发的.界面简洁的哔哩哔哩视频下载工具. 项目简介 这是一款基于WPF开发的,B站下载工具,操作界面简洁,支持多线程下载. ...

  10. OSG开发笔记(三十二):深入理解相机视口、制作支持与主视图同步变换旋转的相机HUD

    前言   深入理解相机视口,摸索相机视口旋转功能,背景透明或者不透明.  本篇,实现了一个左下角旋转HUD且背景透明的相机视口.   Demo                  HUD相机的坐标    ...