在 ASP .NET Core 9.0 中使用 Scalar 創建漂亮的 API 文檔

示例代碼:https://download.csdn.net/download/hefeng_aspnet/90407900?

????????Scalar 是一款可幫助我們為 API 創建精美文檔的工具。與感覺有些過時的默認 Swagger 文檔不同,Scalar 為 API 文檔提供了全新而現代的 UI。其簡潔的設計讓開發人員可以輕松找到測試所需的 API。

????????在本文中,我們將探討如何在 ASP.NET Core Web API 中使用 Scalar 進行 API 文檔編寫以替換默認的 Swagger UI。

安裝 Scalar

打開 NuGet 包管理器,搜索并安裝Scalar.AspNetCore包:

配置Scalar

打開Program.cs文件并替換默認的 swagger 配置:

From this:

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

To this:

app.UseSwagger(opt =>
{
? ? opt.RouteTemplate = "openapi/{documentName}.json";
});
app.MapScalarApiReference(opt =>
{
? ? opt.Title = "Scalar Example";
? ? opt.Theme = ScalarTheme.Mars;
? ? opt.DefaultHttpClient = new(ScalarTarget.Http, ScalarClient.Http11);
});

持有者認證

我們還可以向 Scalar 文檔添加 Bearer 身份驗證標頭。只需將builder.Services.AddSwaggerGen();配置替換為以下內容:

builder.Services.AddSwaggerGen(opt =>?
{
? ? opt.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
? ? {
? ? ? ? BearerFormat = "JWT",
? ? ? ? Description = "JWT Authorization header using the Bearer scheme.",
? ? ? ? Name = "Authorization",
? ? ? ? In = ParameterLocation.Header,
? ? ? ? Type = SecuritySchemeType.Http,
? ? ? ? Scheme = "Bearer"
? ? });
? ? opt.AddSecurityRequirement(new OpenApiSecurityRequirement
? ? ? ? ? ? {
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? new OpenApiSecurityScheme
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? Reference = new OpenApiReference
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Id = "Bearer",
? ? ? ? ? ? ? ? ? ? ? ? ? ? Type = ReferenceType.SecurityScheme
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? Array.Empty<string>()
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
});

這是完整的Program.cs文件:

using Microsoft.OpenApi.Models;
using Scalar.AspNetCore;

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();

builder.Services.AddSwaggerGen(opt =>?
{
? ? opt.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
? ? {
? ? ? ? BearerFormat = "JWT",
? ? ? ? Description = "JWT Authorization header using the Bearer scheme.",
? ? ? ? Name = "Authorization",
? ? ? ? In = ParameterLocation.Header,
? ? ? ? Type = SecuritySchemeType.Http,
? ? ? ? Scheme = "Bearer"
? ? });
? ? opt.AddSecurityRequirement(new OpenApiSecurityRequirement
? ? ? ? ? ? {
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? new OpenApiSecurityScheme
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? Reference = new OpenApiReference
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? Id = "Bearer",
? ? ? ? ? ? ? ? ? ? ? ? ? ? Type = ReferenceType.SecurityScheme
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? Array.Empty<string>()
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
});

var app = builder.Build();

app.UseSwagger(opt =>
{
? ? opt.RouteTemplate = "openapi/{documentName}.json";
});
app.MapScalarApiReference(opt =>
{
? ? opt.Title = "Scalar Example";
? ? opt.Theme = ScalarTheme.Mars;
? ? opt.DefaultHttpClient = new(ScalarTarget.Http, ScalarClient.Http11);
});

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

啟動設置

為了讓 Scalar 在運行應用程序時自動打開,我們需要調整LaunchSettings.json文件。我們可以在Properties文件夾中找到此文件:

打開LaunchSettings.json文件并將“launchUrl”: “swagger”配置更改為“launchUrl”: “scalar/v1”:

{
? "$schema": "http://json.schemastore.org/launchsettings.json",
? "iisSettings": {
? ? "windowsAuthentication": false,
? ? "anonymousAuthentication": true,
? ? "iisExpress": {
? ? ? "applicationUrl": "http://localhost:39471",
? ? ? "sslPort": 44375
? ? }
? },
? "profiles": {
? ? "http": {
? ? ? "commandName": "Project",
? ? ? "dotnetRunMessages": true,
? ? ? "launchBrowser": true,
? ? ? "launchUrl": "scalar/v1",
? ? ? "applicationUrl": "http://localhost:5290",
? ? ? "environmentVariables": {
? ? ? ? "ASPNETCORE_ENVIRONMENT": "Development"
? ? ? }
? ? },
? ? "https": {
? ? ? "commandName": "Project",
? ? ? "dotnetRunMessages": true,
? ? ? "launchBrowser": true,
? ? ? "launchUrl": "scalar/v1",
? ? ? "applicationUrl": "https://localhost:7242;http://localhost:5290",
? ? ? "environmentVariables": {
? ? ? ? "ASPNETCORE_ENVIRONMENT": "Development"
? ? ? }
? ? },
? ? "IIS Express": {
? ? ? "commandName": "IISExpress",
? ? ? "launchBrowser": true,
? ? ? "launchUrl": "scalar/v1",
? ? ? "environmentVariables": {
? ? ? ? "ASPNETCORE_ENVIRONMENT": "Development"
? ? ? }
? ? }
? }
}?

運行應用程序

現在讓我們運行該應用程序:

測試要求

我們的 API 文檔現在看起來很棒!

使用 Scalar 編寫 API 文檔有很多好處,可以簡化開發人員的體驗。設計非常漂亮。側面菜單導航讓我們無需滾動即可快速找到各個部分,而測試請求功能讓我們可以直接從文檔中測試 API 端點。

完整的源代碼可以在這里找到:https://download.csdn.net/download/hefeng_aspnet/90407900?

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

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

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

相關文章

Rabbitmq消息被消費時拋異常,進入Unacked 狀態,進而導致消費者不斷嘗試消費(下)

一、消費流程圖 消息在消費出現異常的時候&#xff0c;將一直保留在消息隊列&#xff0c;所以你會看到以下奇怪的現象&#xff1a; 消息隊列僅有5個消息&#xff0c; 投遞速度也非常快&#xff0c;結果卻一直無法消費掉。 二、重試策略 重試機制的使用場景&#xff1a;重試機制…

【STM32】知識點介紹二:GPIO引腳介紹

文章目錄 一、概述二、GPIO的工作模式三、寄存器編程 一、概述 GPIO&#xff08;英語&#xff1a;General-purpose input/output&#xff09;,即通用I/O(輸入/輸出)端口&#xff0c;是STM32可控制的引腳。STM32芯片的GPIO引腳與外部設備連接起來&#xff0c;可實現與外部通訊、…

JavaScript流程控制精講(二)運算符與循環實戰

JavaScript流程控制精講&#xff08;二&#xff09;運算符與循環實戰 學習目標&#xff1a;掌握條件判斷與循環控制&#xff0c;實現基礎業務邏輯 核心要點&#xff1a;運算符優先級 | 短路運算 | 循環優化 | 項目實戰 一、運算符進階技巧 1.1 算術運算符 console.log(5 % 3)…

如何在IPhone 16Pro上運行python文件?

在 iPhone 16 Pro 上運行 Python 文件需要借助第三方工具或遠程服務&#xff0c;以下是具體實現方法和步驟&#xff1a; 一、本地運行方案&#xff08;無需越獄&#xff09; 使用 Python 編程類 App 以下應用可在 App Store 下載&#xff0c;支持直接在 iPhone 上編寫并運行 …

【趙渝強老師】達夢數據庫的數據庫對象

達夢數據庫中包含各種數據庫對象&#xff0c;主要分為兩大類型&#xff1a;基本數據庫對象和復雜數據庫對象。下面分別進行介紹。 視頻講解如下 【趙渝強老師】達夢數據庫的數據庫對象 一、 基本數據庫對象 常見的基本數據庫對象有&#xff1a;表、索引、視圖、序列、同義詞等…

【每日算法】Day 6-1:哈希表從入門到實戰——高頻算法題(C++實現)

摘要 &#xff1a;掌握高頻數據結構&#xff01;今日深入解析哈希表的核心原理與設計實現&#xff0c;結合沖突解決策略與大廠高頻真題&#xff0c;徹底掌握O(1)時間復雜度的數據訪問技術。 一、哈希表核心思想 哈希表&#xff08;Hash Table&#xff09; 是一種基于鍵值對的…

LeetCode 第29題、30題

LeetCode 第29題&#xff1a;兩數相除 題目描述 給你兩個整數&#xff0c;被除數dividend和除數divisor。將兩數相除&#xff0c;要求不使用乘法、除法和取余運算。整數除法應該向零截斷&#xff0c;也就是截去其小數部分。例如&#xff0c;8.345將被截斷為8&#xff0c;-2.733…

26考研——樹與二叉樹_樹、森林(5)

408答疑 文章目錄 二、樹、森林樹的基本概念樹的定義和特性樹的定義樹的特性 基本術語樹的基本術語和概念祖先、子孫、雙親、孩子、兄弟和堂兄弟結點的層次、度、深度和高度樹的度和高度分支結點和葉結點有序樹和無序樹路徑和路徑長度 森林的基本術語和概念森林的定義森林與樹的…

【HarmonyOS Next之旅】DevEco Studio使用指南(六)

目錄 1 -> 在模塊中添加Ability 1.1 -> Stage模型添加UIAbility 1.1.1 -> 在模塊中添加UIAbility 1.1.2 -> 在模塊中添加Extension Ability 2 -> 創建服務卡片 2.1 -> 概述 2.2 -> 使用約束 2.3 -> 創建服務卡片 2.4 -> 創建動態/靜態卡片…

Langchain 多模態輸入和格式化輸出

多模態輸入 圖片處理&#xff08;最高頻&#xff09; 1.1 URL形式&#xff08;推薦大文件&#xff09; from langchain.schema import HumanMessage from langchain.chat_models import ChatOpenAIchat ChatOpenAI(model"gpt-4-vision-preview")message HumanMes…

Excel多級聯動下拉菜單的自動化設置(使用Python中的openpyxl模塊)

1 主要目的 在Excel中&#xff0c;經常會遇到需要制作多級聯動下拉菜單的情況&#xff0c;要求單元格內填寫的內容只能從指定的多個選項中進行選擇&#xff0c;并且需要設置多級目錄&#xff0c;其中下級目錄的選項內容要根據上級目錄的填寫內容確定&#xff0c;如下圖所示&am…

3.25-1 postman執行+弱網測試

1.導出json腳本 2.打包json文件 3.下載的文件 二 .導入腳本 選擇文件 點擊導入 導入的接口 三.多接口運行 &#xff08;1&#xff09;集合右鍵&#xff0c;點擊run &#xff0c;運行多個接口 2.編輯環境&#xff0c;集合&#xff0c;執行次數等 運行多個接口 四.運行多個接口…

Pear Admin Flask 開發問題

下載代碼請復制以下命令到終端執行 git clone https://gitee.com/pear-admin/pear-admin-flask 于是我下載git 完成安裝后&#xff1a; 安裝 Git 后出現的頁面是 “Git for Windows 的版本發布說明&#xff08;Release Notes&#xff09;”&#xff0c;通常會在安裝完成后自動彈…

12-scala樣例類(Case Classes)

例類&#xff08;Case classes&#xff09;和普通類差不多&#xff0c;只有幾點關鍵差別&#xff0c;接下來的介紹將會涵蓋這些差別。樣例類非常適合用于不可變的數據。 定義一個樣例類 一個最簡單的樣例類定義由關鍵字case class&#xff0c;類名&#xff0c;參數列表&#…

cmakelist中添加opencv

版本選擇 qt的msvc&#xff0c;版本2019 opencv版本 4.5.3 配置了環境變量 x64下的v14中的bin 配置頭文件 {"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}","d:\\QT\\6.5.3\\msvc20…

【C語言】文件操作(詳解)

個人主頁 今天我們來講一下有關文件的相關操作&#xff0c;希望看完這篇文章對你有所幫助&#xff0c;大力感謝你對博主的支持&#xff01; 文章目錄 ?一、為什么使用文件&#x1f389;二、什么是文件2.1 程序文件2.2 數據文件2.3 文件名 &#x1f3a1;三、二進制文件和文本…

基于web的家政服務網站

內容摘要 由于互聯網的使用&#xff0c;人們在管理、應用、服務等領域使用數據更加簡潔、方便&#xff0c;大大提高了工作效率。互聯網正逐漸融入我們的生活&#xff0c;影響和改變我們的生活。 家政服務管理系統是典型的信息管理系統&#xff08;MIS&#xff09;。其開發主要…

【leetcode hot 100 739】每日溫度

解法一&#xff1a;暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一個更高溫度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高溫度的地方wh…

藍橋杯C++基礎算法-0-1背包(優化為一維)

這段代碼實現了0-1 背包問題的動態規劃解法&#xff0c;并且使用了滾動數組來優化空間復雜度。以下是代碼的詳細思路解析&#xff1a; 1. 問題背景 給定 n 個物品&#xff0c;每個物品有其體積 v[i] 和價值 w[i]&#xff0c;以及一個容量為 m 的背包。目標是選擇物品使得總價值…

算法 | 麻雀搜索算法原理,公式,改進算法綜述,應用場景及matlab完整代碼

一、麻雀搜索算法(SSA)原理 1. 算法基礎 麻雀搜索算法(Sparrow Search Algorithm, SSA)是2020年提出的一種群體智能優化算法,靈感來源于麻雀群體的覓食與反捕食行為。算法將麻雀分為三類角色:發現者(Producer):適應度最高,負責探索全局最優區域;加入者(Follower)…