.NET 9 增强 OpenAPI 规范
在 .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. 集成可视化工具
通过 UseSwaggerUI 或 MapScalarApiReference 添加交互式文档界面。
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();
        }
    }
}
示例解析
服务注册
builder.Services.AddOpenApi();
此行代码启用了 OpenAPI 支持。
映射文档
app.MapOpenApi();
这将 OpenAPI 文档映射到默认路径
/openapi/v1.json。增加文档可视化
app.UseSwaggerUI(options =>
{
options.SwaggerEndpoint("/openapi/v1.json", "v1");
});
app.MapScalarApiReference();
这将增加swagger和scalar两种可视化工具。
访问可视化工具
SwaggerUI需要访问/swagger。
Scalar需要访问/scalar/v1。
这两个工具都可以用于可视化 OpenAPI 文档,提供交互式界面以测试 API。
总结
.NET 9 中移除内置 Swagger,增加 OpenAPI 支持,是一个符合行业趋势的重要改进。这一变化不仅提升了开发体验,也使得 .NET 应用能够更高效地与其他工具和平台协作。
通过 OpenAPI 的原生支持和灵活的可视化工具选择,开发者可以更轻松地生成文档、测试接口和集成服务。使用示例代码,立即开始在 .NET 9 中体验 OpenAPI 的强大功能吧!
.NET 9 增强 OpenAPI 规范的更多相关文章
- OPENAPI规范Swagger
		
OPENAPI规范 是一种规范,Swagger是一种工具,Swagger帮我们使用OPENAPI更具体更完善,更好. 博客1:https://app.swaggerhub.com/help/index ...
 - 【API规范】OpenAPI规范
		
OpenAPI规范 openAPI 3.0_百度搜索 OpenAPI Specification 2.0 - CSDN博客 APP相关_API 列表_OpenAPI 2.0_开发指南_移动推送-阿里云 ...
 - OpenAPI规范入门
		
由于API对于我们的软件运行方式至关重要,因此记录我们的API对于确保我们大型IT组织中的每个人都了解正在发生的事情至关重要,这就是我们使用OpenAPI来帮助记录API规范的原因. 在本文中,我将向 ...
 - OpenAPI 3.0 规范-食用指南
		
概述 OpenAPI 3.0 规范由 8 个根对象组成: openapi info servers paths components security tags externalDocs OpenAP ...
 - 关于HTML与CSS编写规范
		
之前一直没有注意到这一点,因为当看到一些优秀的网站的源代码的时候,打开他们引用的css文件格式看起来也并非规范.但幸运的昨天偶然间看到的通过增强CSS规范可读性可优化页面性能,于是下决心痛改前非. 我 ...
 - REST easy with kbmMW #20 – OpenAPI and Swagger UI
		
即将推出的kbmMW更新不仅是一些bug修正,同时将包含一个新的主要功能:客户端存根生成器框架. 那什么是客户端存根生成器框架呢? 他是一个基于kbmMW smart services,可以生成由各种 ...
 - OpenAPI初体验
		
问题的一开始源于客户和服务部门抱怨我的REST API文档写得不好,然后又了解到 django rest framework 利用 coreapi 能自动生成文档,再就是看到 swagger.io 上 ...
 - 基于OAS设计可扩展OpenAPI
		
前言 随着互联网行业的兴起,开发模式已逐步转换为微服务自治:小团队开发微服务,然后通过Restful接口相互调用.开发者们越来越渴望能够使用一种“官话”进行流畅的沟通,甚至实现多种编程语言系统的自动化 ...
 - 使用OpenAPI构建更智能的API
		
像OpenAPI这样的API描述规范是一个关键工具,您应该尽可能地将其好好掌握,记录和执行API的工作由计算机和开发人员完成:OpenAPI 3.0现在允许额外的表现力,可以让机器为我们做更多有用的工 ...
 - openapi and light-4j
		
light-4j项目支持openapi规范,本文介绍一下参照相关demo做的上传功能. openapi.yaml,按照规范编写内容,/openapi/swagger可以查看对应的swagger页面,A ...
 
随机推荐
- typeOrm  教程 创建链接数据库
			
实体 User : import { Entity, PrimaryGeneratedColumn, Column } from "typeorm" @Entity() expor ...
 - KubeSphere 社区双周报 | OpenFunction v1.0.0-rc.0 发布
			
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
 - 01 Eclipse使用Maven慢的问题解决
			
1. Eclipse 使用的是内置的 Maven Eclipse 有可能使用了内置的 Maven,而不是独立安装的 Maven.如果使用 Eclipse 内置的 Maven,默认的 settings. ...
 - 将NC栅格表示时间维度的数据提取出来的方法
			
本文介绍基于Python语言,逐一读取大量.nc格式的多时相栅格文件,导出其中所具有的全部时间信息的方法. .nc是NetCDF(Network Common Data Form)文件的扩展名 ...
 - OKR 目标和关键成果
			
OKR(Objectives and Key Results)是目标与关键成果管理法,是一套明确和跟踪目标及其完成情况的管理工具和方法.1.OKR首先是沟通工具:团队中的每个人都要写OKR,所有这些O ...
 - nginx关于正向代理与反向代理的概念区分
			
正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理. 反向代理 反向代理中客户端对 ...
 - SpringBoot用户头像上传
			
1.上传到本地服务器 controller层主要以MultipartFile接收即可,这里返回给前端的该文件保存后的相对路径 @RequestMapping(value = "/applic ...
 - python机器学习(第一章 Python机器学习基础)
			
第一章 Python机器学习基础 基础: Python官网:https://www.python.org/doc/: 历史版本下载与维护信息:https://www.python.org/downlo ...
 - SQL 清除数据库中所有表的数据
			
进行数据库的操作,有时候我们需要清除数据库中所有的数据,如果你不嫌麻烦,可以一次一次的执行truncate操作,但是如果遇到有无数个表的情况,这种操作无疑是很耗时的 我曾经百度别人的代码,看都没看就直 ...
 - 终于注册成功了 Web of Science 账号
			
地址: https://www.webofscience.com/wos/op/publications/add 个人主页: https://www.webofscience.com/wos/auth ...