.NET 9 徹底改變了 API 文檔:從 Swashbuckle(Swagger) 到 Scalar

?示例代碼下載:https://download.csdn.net/download/hefeng_aspnet/90404652?

摘要

????????API 文檔是現代軟件開發的支柱。隨著 .NET 9 從 Swashbuckle 轉向 Microsoft.AspNetCore.OpenApi,開發人員需要新的策略來保持高效。本文探討了這些變化,并介紹了 API 文檔的變革者 Scalar。
?

???????本文深入探討了 Swagger 在 ASP.NET 生態系統中的演變和集成,重點關注 .NET 9 中的新發展。它追溯了 Swagger 從其作為開源項目的起源到其被廣泛采用作為 .NET 領域中 API 文檔、測試和客戶端代碼生成的事實上的工具的歷程。隨著 .NET Core 的成熟,Swashbuckle 等 Swagger 工具簡化了向 ASP.NET 應用程序添加交互式文檔和 OpenAPI 支持的過程。但是,隨著 .NET 9 的發布,Swashbuckle.AspNetCore 已被棄用,取而代之的是 Microsoft.AspNetCore.OpenApi 庫。本文提供了有關如何將 Swagger 整合到 .NET 9 Web API 中的實用指導,并強調了向更現代、更高效的工具的轉變。它還介紹了 Scalar .NET,這是一個創新平臺,它通過時尚的用戶界面和一流的 OpenAPI 支持增強了 Swagger。本文提供了分步說明和代碼示例,為希望在 .NET 9 中實現 API 文檔策略現代化的開發人員提供了全面的資源。

Swagger 的故事
????????ASP.NET 中 Swagger 的故事與 API 驅動開發的興起以及對更好的方法來記錄、測試和與 API 交互的需求交織在一起。以下是 Swagger 如何成為 ASP.NET 開發人員的關鍵工具的細分:

API 的興起
????????隨著 RESTful API 成為現代應用程序開發的核心,開發人員面臨著創建清晰一致的文檔的挑戰。傳統的文檔方法容易出錯且難以維護,尤其是對于大型 API。Swagger
于 2011 年作為 Tony Tam 的一個開源項目出現。它旨在標準化 API 的描述方式,使工具能夠自動生成交互式文檔、客戶端 SDK 和服務器存根。

.NET 中的早期采用
????????ASP.NET 開發人員很快就看到了 Swagger 的潛力。然而,集成最初是手動的,需要開發人員手動編寫 Swagger 規范文件(以 JSON 或 YAML 格式)。這個過程很繁瑣,阻礙了采用。

Swashbuckle 讓 Swagger 變得天衣無縫
????????Swashbuckle 由 Richard Morris 創建,是 ASP.NET 開發人員的一大變革。它提供了一種將 Swagger 集成到 ASP.NET 項目中的簡便方法,可自動從 Web API 控制器和路由生成 Swagger JSON。

Swashbuckle 添加了以下功能:

自動文檔:使用 XML 注釋和數據注解直接從代碼生成 API 文檔。
Swagger UI 集成:將交互式 API 文檔界面直接嵌入到您的應用程序中。
可定制性:允許開發人員擴展和調整 Swagger 輸出。

ASP.NET Core 時代
????????2016 年推出 ASP.NET Core 時,它??就以模塊化和靈活性為設計理念。這使得集成 Swagger 工具變得更加簡單。Swashbuckle 適應了 ASP.NET Core,并成為 Swagger 集成的事實標準。

ASP.NET Core 時代的主要功能:

OpenAPI 規范: Swagger 于 2015 年過渡到 OpenAPI 標準,確保了更廣泛的行業采用。
改進的中間件支持: ASP.NET Core 的中間件架構使得添加 Swagger 生成器和 UI 中間件變得簡單。
API 版本支持: Swashbuckle 和 NSwag 等工具支持多個 API 版本,以滿足不斷發展的 API 的需求。

擴展 Swagger 生態系統
如今,ASP.NET 開發人員有多種使用 Swagger 的選擇:

Swashbuckle:最受歡迎且功能豐富的 ASP.NET Core 解決方案。
NSwag:另一個強大的工具,支持 OpenAPI 并添加了 TypeScript 和 C# 的客戶端代碼生成等功能。
Azure 集成: Swagger/OpenAPI 規范通常用于將 API 與 Azure API 管理集成。

Swagger 在現代開發中的作用 ASP.NET 項目中的 Swagger(或 OpenAPI)在以下方面起著關鍵作用:
協作:彌合開發人員、測試人員和利益相關者之間的差距。
自動化:自動生成客戶端SDK和測試工具。
開發人員體驗:允許開發人員通過 Swagger UI 等工具以交互方式探索和測試 API。

Swashbuckle.AspNetCore 將在 .NET9 中刪除(Swashbuckle 是否已被棄用?)
“ ASP.NET Core 團隊在 .NET 5 時間范圍內開始提供依賴于 Swashbuckle 的 Web API 模板。這一決定使團隊能夠提供對 OpenAPI 的內置支持,OpenAPI 是一種與語言無關、與平臺無關的基于 Web 的 API 表示,包含發現和與基于 HTTP 的服務端點交互所需的一切。您可能更熟悉“Swagger”這個名稱,它指的是一組用于處理 OpenAPI 文檔的工具。OpenAPI 文檔中的信息支持客戶端代碼生成、存根服務器代碼、創建文檔和動態生成基于 Web 的 UI 等場景,以交互方式測試 API。它還在人工智能應用程序中被廣泛用于提供描述 API 的提示,以供生成式 AI 使用。Swashbuckle
是一個很棒的項目,我們感謝它的所有者和社區貢獻者為此投入的時間和精力。該項目不再由其社區所有者積極維護。問題尚未得到解決,并且沒有針對 .NET 8 的官方版本。ASP.NET Core 團隊將在 .NET 9 版本中提供解決方案。計劃是從 Web API 模板中刪除對 Swashbuckle.AspnetCore 的依賴,并擴展 Microsoft.AspNetCore.OpenApi 引入的功能以提供 OpenAPI 文檔生成。 ”
有關 Swashbuckle.AspNetCore 棄用的更多詳細信息,請參閱此 GitHub 問題。

Swagger 的未來
????????隨著 Microsoft 不斷改進 ASP.NET Core 和 OpenAPI 成為行業標準,Swagger 有望繼續成為生態系統不可或缺的一部分。ASP.NET Core 6+ 中的極簡 API 等功能使集成 Swagger 以實現輕量級和高性能 API 變得更加容易。盡管已從 Webapi 示例中刪除了 Swagger,但它仍在更新并可供使用。

如何將 Swashbuckle(實際操作)添加到 .Net9 webapi
????????我將告訴您如何使用 SwashBuckle 將 Swagger 添加到您的 .Net Web API 項目中
開始之前,請確保您的系統上正確安裝了 .Net 版本 9 SDK

首先使用此命令創建一個新的 webapi 項目
Dotnet new webapi -n OpenApi-Swagger-Scalar

然后在 VsCode 中打開你的項目,
接下來右鍵單擊項目資源管理器中的空白區域,然后單擊在集成終端
中打開, 接下來運行此命令
dotnet add package Swashbuckle.AspNetCore

現在是時候在Program.cs中配置 Swagger 了

(您會在program.cs中看到有關 OpenApi 的一些信息

builder.Services.AddOpenApi();
app.MapOpenApi();

(我們將在本主題的后面討論該主題)

添加以下行:
builder.Services.AddOpenApi();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

在 app.MapOpenApi() 下面添加以下幾行
?app.UseSwagger(); // Enable the Swagger JSON endpoint
?app.UseSwaggerUI(); // Enable the Swagger UI
?
運行你的項目并打開 uri:
http://localhost:{your_port}/swagger/index.html

或者直接導航到/swagger
例如
http://localhost:5000/swagger

恭喜!您再次在 .Net9 中擁有了 SwashBuckle Swagger!

OpenApi 的故事
????????OpenAPI,以前稱為 Swagger,是描述 REST API 的規范。它允許開發人員以人機可讀的格式定義其 API 的結構,包括端點、操作、參數和身份驗證方法。OpenAPI
規范 (OAS) 最初由 Tony Tam 于 2010 年作為 Swagger 項目的一部分開發。目標是創建一種描述 API 的標準方法,使開發人員更容易設計、構建、記錄和使用 API。2015 年,Swagger 項目被捐贈給行業領導者聯盟 OpenAPI Initiative,該規范更名為 OpenAPI。Swagger
工具(例如 Swagger Editor、Swagger UI 和 Swagger Codegen)都是圍繞 OpenAPI 規范構建的,旨在幫助開發人員更高效地使用 API。這些工具允許開發人員編寫 OpenAPI 定義、生成交互式 API 文檔以及使用各種編程語言創建服務器存根和客戶端庫。
API 通過 OpenAPI 描述自身結構的能力徹底改變了 API 開發,實現了跨不同工具和平臺的更好協作、自動化和集成。

讓我們告訴你第一個秘密😊
在上一節的測試項目中,你的 Program.cs 中有這兩行
builder.Services.AddOpenApi();
app.MapOpenApi();

在調試您的測試項目時,讓我們導航到此鏈接
http://localhost:{your_port}/openapi/v1.json
例如
http://localhost:5000/openapi/v1.json
您可以看到有關所有 api 的所有文檔。

OpenAPI 與 Swagger
????????Swagger 項目于 2015 年捐贈給 OpenAPI Initiative,此后被稱為 OpenAPI。這兩個名稱可以互換使用。但是,“OpenAPI”指的是規范。“Swagger”是指 SmartBear 的開源和商業產品系列,它們與 OpenAPI 規范配合使用。后續開源產品(例如 OpenAPIGenerator)也屬于 Swagger 系列,盡管不是由 SmartBear 發布的。

簡而言之:

OpenAPI 是一種規范。
Swagger 是使用 OpenAPI 規范的工具。

例如,OpenAPIGenerator 和 SwaggerUI。您可以在此處信息:microsoft.com

將 SwaggerUI 與 OpenApi json 的功能結合使用
因此,當我們已經有如下所示的 OpenApi 時,
app.MapOpenApi();

還有另一種選擇,Swagger 可以從 OpenApi 文檔中受益,以生成它的 UI,而不是swagger json 端點。
因此,我們可以刪除此行,
app.UseSwagger();

而不是這一行,
app.UseSwaggerUI();

您可以像這樣使用
?app.UseSwaggerUI(options =>
? ? {
? ? ? ? options.SwaggerEndpoint("/openapi/v1.json", "Your Custom Title");
? ? });

Scalar,改變游戲規則!
????????Scalar .NET 是一個開源 API 平臺,它提供現代 REST API 客戶端和精美的 API 參考,并提供一流的 OpenAPI/Swagger 支持。Scalar.AspNetCore 包可輕松將 Scalar API 參考集成到您的 .NET 應用程序中。您可以在此處信息。

如何將 Swashbuckle(在實踐中)添加到 .Net9 webapi

安裝包:使用以下命令將 Scalar.AspNetCore 包添加到您的 .NET 示例項目中:
dotnet add package Scalar.AspNetCore

將此行添加到Program.cs上方作為命名空間
using Scalar.AspNetCore;

確保你的program.cs中有這些行
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
app.MapOpenApi();

現在將此行添加到Program.cs
app.MapScalarApiReference();

當調試你的測試項目時,讓我們導航到這個鏈接
http://localhost:{your_port}/scalar/v1
例如
http://localhost:5000/scalar/v1
你可以看到一個新的現代和非常酷的 UI 來測試你的 api:

是時候告訴你第二個秘密了😊
而不是這句話
app.MapScalarApiReference();

讓我們使用類似這樣的東西
app.MapScalarApiReference(options =>
{
? ? options
? ? .WithTitle("Your Custom Title")
? ? .WithTheme(ScalarTheme.Mars)
? ? .WithDefaultHttpClient(ScalarTarget.CSharp, ScalarClient.HttpClient);
});
轟!!!

? ? ? ? ·?現在你有了自定義標題
? ? ? ? ·?你有一個很棒的主題
? ? ? ? ·?您默認使用 C# 代碼

所有解決方案現在您擁有所有這些鏈接,可以使用Program.cs
中存在的這些代碼行進行測試
builder.Services.AddOpenApi();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
app.MapOpenApi();
app.UseSwagger(); // Enable the Swagger JSON endpoint
app.UseSwaggerUI(); // Enable the Swagger UI
app.MapScalarApiReference();

基于 Json 的 api 文檔
http://localhost:5000/openapi/v1.json
http://localhost:5247/swagger/v1/swagger.json

基于 UI 的
http://localhost:5000/swagger/index.html
http://localhost:5000/scalar/v1

總結
????????本文探討了 Swagger 在 ASP.NET 生態系統中的演變及其與 .NET 9 的集成,重點介紹了 OpenAPI 和 Scalar 平臺。

????????它首先詳細介紹了 Swagger 的歷史、它作為標準化 API 文檔的開源工具的出現以及 ASP.NET 開發人員的早期采用。本文重點介紹了 Swashbuckle 等工具如何使 Swagger 更易于與 ASP.NET Core 集成,從而自動化 API 文檔并增強開發人員體驗。隨著 .NET Core 的發展,Swagger 成為 API 文檔、測試和客戶端代碼生成的關鍵工具。

????????隨著 .NET 9 的發布,Swashbuckle.AspNetCore 已被棄用,ASP.NET Core 團隊計劃擴展 Microsoft.AspNetCore.OpenApi 庫。本文提供了將 Swagger(通過 Swashbuckle)添加到 .NET 9 Web API 項目的實用步驟,并討論了從 Web API 模板中刪除 Swagger,并提出了 API 文檔的替代方案。

????????本文還介紹了 Scalar .NET,這是一個現代平臺,它通過漂亮的 UI 和 OpenAPI 支持增強了 Swagger。它展示了如何將 Scalar 集成到 .NET 項目中,從而提供更精致、更可定制的 API 參考解決方案。

????????總之,本文介紹了 Swagger 在 .NET 生態系統中的歷史、演變和未來,以及在 .NET 9 中使用 Swagger 和 Scalar 進行高效 API 文檔編寫的實用指南。借助提供的工具和見解,您現在可以在 .NET 9 中對 API 文檔進行現代化改造。無論是利用 Scalar 還是堅持使用 OpenAPI,關鍵在于適應并保持領先于不斷發展的標準。

源代碼可在此處下載:https://download.csdn.net/download/hefeng_aspnet/90404652

如果您喜歡此文章,請收藏、點贊、評論,謝謝,祝您快樂每一天。??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/74358.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/74358.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/74358.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入剖析Java虛擬機(JVM):從零開始掌握Java核心引擎

📌 引言:為什么每個Java開發者都要懂JVM? 想象你是一名賽車手,Java是你的賽車,而JVM就是賽車的引擎。 雖然你可以不關心引擎內部構造就能開車,但要想在比賽中獲勝,必須了解引擎如何工作&#…

怎么連接linux服務器的桌面

一、使用 VNC(Virtual Network Computing) 1. 服務器端配置(Ubuntu 22.04 示例) # 安裝 VNC 服務器(以 TigerVNC 為例) sudo apt update sudo apt install tigervnc-standalone-server tigervnc-xorg-ext…

elasticsearch 通用筆記

文章目錄 一、前言二、內容說明1、目錄簡介2、本文例子前提內容 三、操作內容1、設置ES為服務2、查看健康度參數解析 3、索引相關查詢3.1、查詢指定索引內容3.1.1、匹配查詢3.1.2、精確匹配(不嘗試分詞)3.1.3、范圍查詢3.1.4、id查詢3.1.5、通配符及前綴…

windows安裝配置FFmpeg教程

1.先訪問官網:https://www.gyan.dev/ffmpeg/builds/ 2.選擇安裝包Windows builds from gyan.dev 3. 下滑找到release bulids部分,選擇ffmpeg-7.0.2-essentials_build.zip 4. 然后解壓將bin目錄添加path系統變量:\ffmpeg-7.0.2-essentials_bui…

強大的AI網站推薦(第二集)—— V0.dev

網站:V0.dev 號稱:前端開發神器,專為開發人員和設計師設計,能夠使用 AI 生成 React 代碼 博主評價:生成的UI效果太強大了,適合需要快速創建UI原型的設計師和開發者 推薦指數:🌟&…

c#知識點補充4

1.發布者訂閱模式 發布者 訂閱者 倆者直接的關聯使用

01、聊天與語言模型

一、簡單說明模型 LLM目前有兩種API提供 LanguageModel:接收一個a作為輸入并返回一個b作為輸出,這種是已經過時的ChatLanguageModel:接收多個輸入,然后返回相應的輸出 ChatLanguaggeModel是LangChain4j中LLM交互低級API&#x…

SQL的DCL,DDL,DML和DQL分別是什么

SQL(Structured Query Language)包括以下四種主要語言類別,分別用于不同的數據庫操作: 1. DCL(Data Control Language,數據控制語言) 用于控制數據庫訪問權限和安全。 常見命令: …

spring boot maven一欄引入本地包

1、在項目跟目錄下建立文件夾&#xff0c;比如libs 2、maven依賴 <dependency><groupId>com.hikvision.ga</groupId><artifactId>artemis-http-client</artifactId><version>1.1.10</version><scope>system</scope>&l…

連續型隨機變量及其分布

連續型隨機變量 數學公式可以看作一門精確描述事物的語言&#xff0c;比語言尤其是漢語的模糊性精確多了&#xff01;離散型數據的處理可以通過枚舉和相加進行處理。而連續型數據則沒有辦法這樣處理。我們必須要通過函數和取值區間還有微積分計算。 &#xff3b;定義1&#x…

AI重構SEO關鍵詞優化路徑

內容概要 人工智能技術的深度應用正在推動SEO優化進入全新階段。傳統關鍵詞優化依賴人工經驗與靜態規則&#xff0c;存在效率瓶頸與策略滯后性缺陷。AI技術通過智能語義分析系統&#xff0c;能夠穿透表層詞匯限制&#xff0c;精準捕捉用戶搜索意圖的語義關聯網絡&#xff0c;結…

turnjs圖冊翻書效果

npm install https://github.com/igghera/turn.js.git //或者 npm install turn.js //import $ from "jquery"; //記得引入jquery import turn.js; // 引入 Turn.jsimport turn from "/utils/turn.min.js";// 引入 Turn.jsinitBook(length) {var that thi…

用PostgreSQL玩轉俄羅斯方塊:當SQL成為游戲引擎

當DBA開始摸魚2025年某深夜&#xff0c;一位不愿透露姓名的DBA為了在監控大屏上隱藏游戲行為&#xff0c;竟用SQL實現了俄羅斯方塊&#xff01;從此&#xff0c;SELECT成了方向鍵&#xff0c;UPDATE成了旋轉指令&#xff0c;DELETE成了消除大招。本文將揭秘這個瘋狂項目的技術內…

計算機網絡層超全解析:從IP協議到路由算法

&#x1f310; &#xff08;專業詳解生活化類比&#xff0c;邏輯一鏡到底&#xff09; &#x1f4d6; 網絡層的核心使命 核心任務&#xff1a;在不同網絡間為數據包選擇最佳路徑&#xff0c;實現端到端通信。 類比&#xff1a;快遞公司總部&#xff08;網絡層&#xff09;根據…

代碼隨想錄算法訓練營第38天 | 322. 零錢兌換 279.完全平方數 139.單詞拆分 背包問題總結

322. 零錢兌換 如果求組合數就是外層for循環遍歷物品&#xff0c;內層for遍歷背包。 如果求排列數就是外層for遍歷背包&#xff0c;內層for循環遍歷物品。 錢幣有順序和沒有順序都可以&#xff0c;都不影響錢幣的最小個數。 視頻講解&#xff1a;動態規劃之完全背包&#xff0…

關于網絡的一點知識(持續更新)

1、IP地址和子網掩碼、端口號: IP地址是設備在網絡上的地址,相當于一棟房子的門牌號。子網掩碼相當于房子所在的街道。同一條街道的房子間是通過街道直通的,主人可以互相拜訪。 舉個例子,如下圖所示。 說明:將兩臺設備的IP和子網掩碼轉化為二進制,然后將各自的IP地址和…

Idea中使用Git插件_合并當前分支到master分支_沖突解決_很簡單---Git工作筆記005

由于之前用svn習慣了,用的git少,其實在idea中使用git,解決沖突,合并分支,非常的簡單,一起來看一下吧. 一定要注意操作之前,一定要確保自己的分支代碼,都已經commit提交了,并且push到遠程了. 不要丟東西. 可以看到首先,在idea的左下角有個 git,點開以后 可以看到有顯示的分支…

[自動化] 【八爪魚】使用八爪魚實現CSDN文章自動閱讀腳本

在CSDN上&#xff0c;文章的閱讀量往往是衡量內容影響力的一個重要指標。為了測試自動化手段能否提高閱讀數&#xff0c;我嘗試使用網頁自動化工具來模擬人工閱讀某個ID的文章。 1. 網頁自動化的常見方案 談到網頁自動化&#xff0c;Selenium 是一個最常見的選擇。它可以通過…

Linux 系統性能優化高級全流程指南

Linux 系統性能優化高級全流程指南 一、系統基礎狀態捕獲 1. 系統信息建檔 除了原有的硬件、內核和存儲拓撲信息收集&#xff0c;還增加 CPU 緩存、網絡設備詳細信息等。 # 硬件信息 lscpu > /opt/tuning/lscpu.origin dmidecode -t memory > /opt/tuning/meminfo.or…

常?中間件漏洞--Tomcat

tomcat是?個開源?且免費的jsp服務器&#xff0c;默認端? : 8080&#xff0c;屬于輕量級應?服務器。它可以實現 JavaWeb程序的裝載&#xff0c;是配置JSP&#xff08;Java Server Page&#xff09;和JAVA系統必備的?款環境。 1.CVE-2017-12615 Tomcat put?法任意?件寫…