国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET Core WebAPI中使用Swagger(完整教程)

這篇具有很好參考價(jià)值的文章主要介紹了.NET Core WebAPI中使用Swagger(完整教程)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、Swagger簡(jiǎn)介

1.1-什么是Swagger?

  • Swagger是一個(gè)規(guī)范且完整的框架,用于生成、描述、調(diào)試和可視化Restfull風(fēng)格的Web服務(wù)。
  • Swagger的目標(biāo)是對(duì)Rest API定義一個(gè)標(biāo)準(zhǔn)且和語(yǔ)言無(wú)關(guān)的接口,可以讓人和計(jì)算機(jī)擁有無(wú)需訪問(wèn)源碼、文檔或網(wǎng)絡(luò)流量監(jiān)控就可以發(fā)現(xiàn)和連接服務(wù)的能力。當(dāng)通過(guò)Swagger進(jìn)行正確定義,用于可以理解遠(yuǎn)程服務(wù)并使用最少邏輯與遠(yuǎn)程服務(wù)進(jìn)行交互。與為底層編程所實(shí)現(xiàn)的接口類(lèi)似,Swagger消除了調(diào)用服務(wù)時(shí)可能會(huì)有的猜測(cè)。

1.2-Swagger有什么優(yōu)勢(shì)?

  • 支持API自動(dòng)生成同步的在線文檔:使用Swagger后可以直接通過(guò)代碼生成文檔,不需要自己去手動(dòng)編寫(xiě)接口文檔了,對(duì)程序員來(lái)說(shuō)是非常方便。
  • 提供Web頁(yè)面在線測(cè)試API:光有文檔還不夠,Swagger生成的文檔還支持在線測(cè)試。參數(shù)和格式都一定定義好了,直接在界面上輸出參數(shù)對(duì)應(yīng)的值即可在先測(cè)試接口。
  • Swagger可以生成客戶端SDK代碼用于各種不同平臺(tái)的實(shí)現(xiàn)。
  • Swagger文件可以在許多不同的平臺(tái)上從代碼注釋中自動(dòng)生成。
  • Swagger有一個(gè)強(qiáng)大的社區(qū),里面有許多強(qiáng)悍的貢獻(xiàn)者。

1.3-Swagger、OpenAPI3.0、Restful API的區(qū)別?

  • Open API:OpenAPI是規(guī)范的正式名稱(chēng)。該規(guī)范的開(kāi)發(fā)時(shí)由OpenAPI Initative推動(dòng)的。該提倡涉及不同領(lǐng)域的30個(gè)組織——包括Microsoft、Google、IBM和CapitalOne.
  • Swagger:實(shí)現(xiàn)OpenAPI規(guī)范的工具之一。
  • RestfulAPI:是一種WebAPI設(shè)計(jì)架構(gòu)風(fēng)格。其中Rest即Represntaional State Transfer的縮寫(xiě),可以翻譯為"狀態(tài)表述轉(zhuǎn)換"。是目前比較成熟的一套互聯(lián)網(wǎng)應(yīng)用程序的API設(shè)計(jì)架構(gòu)風(fēng)格OpenAPI規(guī)范即是這個(gè)架構(gòu)風(fēng)格的具體實(shí)現(xiàn)規(guī)范。

1.4-Swagger工具

.NET Core WebAPI中使用Swagger(完整教程)


1.5-Swagger UI工具主要功能

  • 接口的文檔在線自動(dòng)生成
  • 功能測(cè)試等

1.6-Swashbuckle組件

  • Swashbuckle是.NET Core中對(duì)Swagger的封裝,他有2個(gè)核心組件:
    • Swashbuckle.SwaggerGen:提供生成對(duì)象、方法、返回類(lèi)型等JSON Swagger文檔的功能。
    • Swashbuckle.SwaggerUI:是一個(gè)嵌入式版本的SwaggerUI工具,使用Swagger UI強(qiáng)大的富文本表現(xiàn)形式可定制化的來(lái)描述Web API的功能,并且包含內(nèi)置的公共方法測(cè)試工具。

1.7-TPL

  • 任務(wù)并行庫(kù)(TPL)是System.Threading.Tasks命名空間中的一組公共類(lèi)型和API
  • TPL動(dòng)態(tài)的擴(kuò)展并發(fā)度,以最有效的使用可用的處理器。通過(guò)使用TPL,您可以最大限度的提高代碼的性能,同時(shí)專(zhuān)注于您的代碼業(yè)務(wù)。
  • 從.NETFramework4開(kāi)始,TPL是編寫(xiě)多線程和并行代碼的首選方式。

二、在ASP.NET Core Web API中使用Swagger UI

2.1-創(chuàng)建一個(gè)WebAPI項(xiàng)目

.NET Core WebAPI中使用Swagger(完整教程)


2.2-下載、安裝、引入【Swashbuckle.AspNetCore】包

右擊【解決方案】,然后點(diǎn)擊【管理Nuget包】,搜索【Swashbuckle.AspNetCore】包,點(diǎn)擊【安裝】即可,博主這里下載的是【最新穩(wěn)定版5.6.3】。
.NET Core WebAPI中使用Swagger(完整教程)


2.3-配置Swagger中間件(注冊(cè) Swagger 服務(wù))

在【Startup.cs】文件中的【ConfigureService】類(lèi)中引入命名空間,并注冊(cè)Swagger服務(wù)并配置文檔信息。

//引入命名空間
using Microsoft.OpenApi.Models;

//注冊(cè)Swagger
services.AddSwaggerGen(u => {
    u.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
                 {
                     Version = "Ver:1.0.0",//版本
                     Title = "xxx后臺(tái)管理系統(tǒng)",//標(biāo)題
                     Description = "xxx后臺(tái)管理系統(tǒng):包括人員信息、團(tuán)隊(duì)管理等。",//描述
                     Contact=new Microsoft.OpenApi.Models.OpenApiContact { 
                         Name="西瓜程序猿",
                         Email="xxx@qq.com"
                         }
                 });
});

如果安裝的 Swashbuckle.AspNetCore Nuget包版本<= 3.0.0,寫(xiě)法略有不同。將 【OpenApiInfo】 替換成 【Info】 即可。

services.AddSwaggerGen(x =>
{

    x.SwaggerDoc("v1", new Info() { Title = "Web Api", Version = "v1" });

});

2.4-啟用Swagger中間件

在【Startup.cs】文件中的【Configure】類(lèi)中啟用Swagger中間件,為生成的JSON文檔和SwaggerUI提供服務(wù)。

 //啟用Swagger中間件
app.UseSwagger();
//配置SwaggerUI
app.UseSwaggerUI(u =>
                 {
                     u.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI_v1");
                 });

2.5-運(yùn)行項(xiàng)目即可

2.5.1-如果我們直接運(yùn)行項(xiàng)目,會(huì)出現(xiàn)這樣的界面,說(shuō)明我們的Web API程序沒(méi)有問(wèn)題。
.NET Core WebAPI中使用Swagger(完整教程)


2.5.2-然后我們?cè)诘刂窓谥休斎搿緎wagger/v1/swagger.json】。
.NET Core WebAPI中使用Swagger(完整教程)


可以看到瀏覽器出現(xiàn)這樣的界面,如果出現(xiàn)這樣的界面,說(shuō)明Swagger也沒(méi)有問(wèn)題。
.NET Core WebAPI中使用Swagger(完整教程)


注意:按照2.5.1在地址欄中的【swagger/v1/swagger.json】需要與在【Startup.cs】文件中的【Configure】類(lèi)中啟用Swagger中間件添加的代碼保持一致,因?yàn)檫@段代碼就是自動(dòng)生成JSON文件的,你配置的路徑和JSON文件地址是什么,就在瀏覽器中輸入對(duì)應(yīng)的即可。
.NET Core WebAPI中使用Swagger(完整教程)


2.5.3-以上步驟都沒(méi)問(wèn)題的話,然后我們地址欄中輸入【swagger/index.html】。
.NET Core WebAPI中使用Swagger(完整教程)


如果能出現(xiàn)以下界面,說(shuō)明SwaggerUI也沒(méi)有問(wèn)題,都全部正常了。
.NET Core WebAPI中使用Swagger(完整教程)


2.6-如果想每次運(yùn)行都默認(rèn)直接到Swagger的頁(yè)面

2.6.1-打開(kāi)【launchSettings.json】這個(gè)文件。
.NET Core WebAPI中使用Swagger(完整教程)


2.6.2-然后將【launchUrl】的值從【weatherforecast】修改成【swagger】。
.NET Core WebAPI中使用Swagger(完整教程)


2.6.3-然后運(yùn)行項(xiàng)目就直接進(jìn)入Swagger首頁(yè)了。


2.7-描述信息詳細(xì)講解

.NET Core WebAPI中使用Swagger(完整教程)
.NET Core WebAPI中使用Swagger(完整教程)


三、啟用XML注釋

3.1-雙擊解決方案
.NET Core WebAPI中使用Swagger(完整教程)


3-2-然后進(jìn)入這個(gè)頁(yè)面,加上這個(gè)代碼
.NET Core WebAPI中使用Swagger(完整教程)

<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>

3-3.在【Startup.cs】文件中的【ConfigureService】類(lèi)中注冊(cè)讀取XML信息的Swagger。
.NET Core WebAPI中使用Swagger(完整教程)

  #region 讀取xml信息
     // 使用反射獲取xml文件,并構(gòu)造出文件的路徑
    var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
    var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
    // 啟用xml注釋?zhuān)摲椒ǖ诙€(gè)參數(shù)啟用控制器的注釋?zhuān)J(rèn)為false.
    u.IncludeXmlComments(xmlPath, true);
  #endregion

注意:

  • 對(duì)于Linux或者非Windows操作系統(tǒng),文件名和路徑區(qū)分大小寫(xiě)。例如“MyWebApiUseSwagger.xml”文件在Windows上有效,但在CentOS上是無(wú)效的。
  • 獲取應(yīng)用程序路徑,建議采用Path.GetDirectoryName(typeof(Program).Assembly.Location)這種方式或者·AppContext.BaseDirectory這樣來(lái)獲取

四、實(shí)例

4.1-寫(xiě)一個(gè)實(shí)例:在【W(wǎng)eatherForecastController】控制器中寫(xiě)一個(gè)方法。
.NET Core WebAPI中使用Swagger(完整教程)


4.2-寫(xiě)上以下代碼然后進(jìn)行請(qǐng)求。

/// <summary>
/// 這是一個(gè)例子
/// </summary>
/// <remarks>
/// 描述:這是一個(gè)帶參數(shù)的GET請(qǐng)求
/// Web API
/// </remarks>
/// <param name="id">主鍵ID</param>
/// <returns>測(cè)試字符串</returns>
[HttpGet("{id}")]
public ActionResult<string> Get(int id) {
     return $"你請(qǐng)求的ID是:{id}";
}

4.3-可以看到【XML注釋】起作用了,然后調(diào)用也成功了。
.NET Core WebAPI中使用Swagger(完整教程)


五、小知識(shí)點(diǎn)

5.1-當(dāng)入?yún)?出參返回object或者匿名類(lèi)時(shí),也需要加上注釋怎么辦?

.NET Core WebAPI中使用Swagger(完整教程)
.NET Core WebAPI中使用Swagger(完整教程)

(1)在方法中加上以下特性:

 [ProducesResponseType(typeof(xxx),200)]

.NET Core WebAPI中使用Swagger(完整教程)


(2)在Remarks節(jié)點(diǎn)下進(jìn)行注釋?zhuān)?br>.NET Core WebAPI中使用Swagger(完整教程)
.NET Core WebAPI中使用Swagger(完整教程)


5.2-如何隱藏接口:有接口但是不想讓別人看到?

在需要進(jìn)行隱藏的接口上加上以下特性即可:

  [ApiExplorerSettings(IgnoreApi =true)]

.NET Core WebAPI中使用Swagger(完整教程)


5.3-設(shè)置路由前綴/自定義頭內(nèi)容/網(wǎng)頁(yè)標(biāo)題

如果不想加上"swagger",而輸入5000即可訪問(wèn),也可以自定義路由前綴,加上以下代碼即可。
.NET Core WebAPI中使用Swagger(完整教程)
.NET Core WebAPI中使用Swagger(完整教程)

5.3-自定義首頁(yè)

(1)新建一個(gè)【index.html】,右擊該文件,點(diǎn)擊【屬性】,進(jìn)行設(shè)置相關(guān)操作。
.NET Core WebAPI中使用Swagger(完整教程)
.NET Core WebAPI中使用Swagger(完整教程)


(2)在Startup.cs進(jìn)行配置。
.NET Core WebAPI中使用Swagger(完整教程)


(3)靜態(tài)頁(yè)面下載地址:

https://github.com/swagger-api/swagger-ui/blob/master/dist/index.html


5.4-開(kāi)啟JWT認(rèn)證

(1)在Startup.cs進(jìn)行配置。
.NET Core WebAPI中使用Swagger(完整教程)

 #region 開(kāi)啟JWT
   u.OperationFilter<SecurityRequirementsOperationFilter>();

	u.AddSecurityDefinition("oauth2", new Microsoft.OpenApi.Models.OpenApiSecurityScheme
	{
		Description = "JWT授權(quán)(數(shù)據(jù)將在請(qǐng)求頭中進(jìn)行傳輸)直接在下框中輸入Bearer { token } (注意兩者之間是一個(gè)空格) ",
  		Name = "Authorization",
		In = Microsoft.OpenApi.Models.ParameterLocation.Header,//jwt默認(rèn)存放Authorazation信息的位置(請(qǐng)求頭中)
		Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey
	});
#endregion

(2)下載包,注意版本號(hào)問(wèn)題,盡量保持一致,不然會(huì)報(bào)錯(cuò)。
.NET Core WebAPI中使用Swagger(完整教程)


(3)然后將接口加上權(quán)限,去請(qǐng)求該接口,可以看到請(qǐng)求頭中會(huì)有以下信息了。
.NET Core WebAPI中使用Swagger(完整教程)


5.5-使用Cookie持久化存儲(chǔ)Token,解決每次刷新需要重新輸入Token授權(quán)

下載相關(guān)資源??梢栽L問(wèn)下載(如果失效了,請(qǐng)聯(lián)系我[西瓜程序猿])。

下載地址(編碼:yRLCRp81):https://yongteng.lanzoub.com/iG3Be16ayltc
密碼:anum


目錄結(jié)構(gòu):
.NET Core WebAPI中使用Swagger(完整教程)

(1)在【index.html】文件導(dǎo)入abp.js/swagger.js文件。
.NET Core WebAPI中使用Swagger(完整教程)


(2)在【swagger.js】里面需要注意請(qǐng)求授權(quán)地址。
.NET Core WebAPI中使用Swagger(完整教程)


(3)后端授權(quán)邏輯。
.NET Core WebAPI中使用Swagger(完整教程)
.NET Core WebAPI中使用Swagger(完整教程)
.NET Core WebAPI中使用Swagger(完整教程)


原文鏈接:https://www.cnblogs.com/kimiliucn/p/17602073.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-622544.html

到了這里,關(guān)于.NET Core WebAPI中使用Swagger(完整教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 實(shí)戰(zhàn)指南:使用 xUnit 和 ASP.NET Core 進(jìn)行集成測(cè)試【完整教程】

    實(shí)戰(zhàn)指南:使用 xUnit 和 ASP.NET Core 進(jìn)行集成測(cè)試【完整教程】

    集成測(cè)試可在包含應(yīng)用支持基礎(chǔ)結(jié)構(gòu)(如數(shù)據(jù)庫(kù)、文件系統(tǒng)和網(wǎng)絡(luò))的級(jí)別上確保應(yīng)用組件功能正常。 ASP.NET Core 通過(guò)將單元測(cè)試框架與測(cè)試 Web 主機(jī)和內(nèi)存中測(cè)試服務(wù)器結(jié)合使用來(lái)支持集成測(cè)試。 集成測(cè)試與單元測(cè)試相比,能夠在更廣泛的級(jí)別上評(píng)估應(yīng)用的組件,確認(rèn)多個(gè)

    2024年04月22日
    瀏覽(30)
  • NET Core 6.0 webapi 簡(jiǎn)單使用+連接數(shù)據(jù)庫(kù)

    NET Core 6.0 webapi 簡(jiǎn)單使用+連接數(shù)據(jù)庫(kù)

    ASP.NET core NET core 6.0 如何使用 在 Program.cs里面 添加對(duì)應(yīng)注釋 效果: Microsoft.EntityFrameworkCore.Sqlite Microsoft.EntityFrameworkCore.Sqlite.Core Newtonsoft.Json:用于Json格式轉(zhuǎn)換 添加測(cè)試Api Tips:這里用到ORM查詢(xún)語(yǔ)法 EntityFramework EF 常用增刪改查語(yǔ)句 運(yùn)行結(jié)果

    2024年02月09日
    瀏覽(24)
  • .net 溫故知新【11】:Asp.Net Core WebAPI 入門(mén)使用及介紹

    .net 溫故知新【11】:Asp.Net Core WebAPI 入門(mén)使用及介紹

    在Asp.Net Core 上面由于現(xiàn)在前后端分離已經(jīng)是趨勢(shì),所以asp.net core MVC用的沒(méi)有那么多,主要以WebApi作為學(xué)習(xí)目標(biāo)。 我使用的是VS2022, .Net 7版本。 在創(chuàng)建界面有幾項(xiàng)配置: 配置Https 啟用Docker 使用控制器 啟用OpenAPI支持 不使用頂級(jí)語(yǔ)句 其中配置Https 是WebApi是否使用https協(xié)議,啟

    2024年02月07日
    瀏覽(90)
  • .NET Core WebAPI中使用Log4net記錄日志
  • .net core 創(chuàng)建WebAPI以及使用EF DBFirst框架使用方法與疑問(wèn)解答(.net 6)

    EF語(yǔ)法包: 生成實(shí)體模型: 修改實(shí)體模型: 把生成的實(shí)體和上下文都輸出到某個(gè)文件夾命令 增加JSON格式腳手架: 若想增加某個(gè)版本json腳手架,需要加入后綴如: 問(wèn)題與解決方案: 1、問(wèn)題: Your startup project \\\'XXX\\\' doesn\\\'t reference Microsoft.EntityFrameworkCore.Design. This package is requi

    2024年02月16日
    瀏覽(27)
  • .NET Core WebAPI中使用Log4net 日志級(jí)別分類(lèi)并記錄到數(shù)據(jù)庫(kù)

    .NET Core WebAPI中使用Log4net 日志級(jí)別分類(lèi)并記錄到數(shù)據(jù)庫(kù)

    記錄日志為文檔 記錄日志到數(shù)據(jù)庫(kù)

    2024年02月20日
    瀏覽(86)
  • 使用 Asp.net core webapi 集成配置系統(tǒng),提高程序的靈活和可維護(hù)性

    使用 Asp.net core webapi 集成配置系統(tǒng),提高程序的靈活和可維護(hù)性

    集成配置系統(tǒng)的主要目的是將應(yīng)用程序的配置信息與代碼分離,使得配置信息可以在不需要修改代碼的情況下進(jìn)行更改。這樣可以提高應(yīng)用程序的靈活性和可維護(hù)性。 ASP.NET Core 提供了一種靈活的配置系統(tǒng),可以輕松地將配置信息從不同的來(lái)源加載到應(yīng)用程序中,并且可以根

    2024年02月01日
    瀏覽(31)
  • ASP.NET Core Web API入門(mén)之二:Swagger詳細(xì)使用&路由設(shè)置

    ASP.NET Core Web API入門(mén)之二:Swagger詳細(xì)使用&路由設(shè)置

    本篇文章是Swagger的詳細(xì)使用,續(xù)上篇ASP.NET Core Web API入門(mén)之一:創(chuàng)建新項(xiàng)目。 Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)的接口文檔。 根據(jù)在代碼中使用自定義的注解來(lái)生成接口文檔,這個(gè)在前后端分離的項(xiàng)目中很重要。這樣做的

    2024年02月15日
    瀏覽(28)
  • .Net Core WebApi

    目錄 MiniMalAPi Demo Program.cs Swagger 文檔+信息 Program.cs API版本控制 ApiVersion.cs Version1Controller.cs Program.cs 生成注釋 解決跨域 .Net 后臺(tái)請(qǐng)求封裝 返回?cái)?shù)據(jù)壓縮 默認(rèn)壓縮 Gzip壓縮 緩存 接口緩存 靜態(tài)文件緩存 最小的api, 請(qǐng)求都寫(xiě)在Program.cs中, 可以做微服務(wù) 該例子僅供參考 這里其他版

    2024年02月14日
    瀏覽(38)
  • ASP.NET Core SingleR Core:WebApi + .net 客戶端開(kāi)發(fā)

    ASP.NET Core SingleR Core:WebApi + .net 客戶端開(kāi)發(fā)

    我之前稍微研究了一下SignalR Core。用起來(lái)還行。簡(jiǎn)單來(lái)說(shuō)SignalR就是用來(lái)解決實(shí)時(shí)通訊的問(wèn)題的。 ASP.NET Core SingleR:初次體驗(yàn)和簡(jiǎn)單項(xiàng)目搭建 SignalR支持三種客戶端,C#,Java,JavaScirpt?;緣蛴昧?。本身就是微軟開(kāi)發(fā)的,肯定支持自己的語(yǔ)言。因?yàn)槭荳ebsocket的上層封裝,所以也要支

    2024年01月20日
    瀏覽(575)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包