個人學習 Swagger的配置及使用

2022-03-24 18:22:43 字數 3406 閱讀 1444

我們之前通過word、excel手動編寫的介面文件或者說是第三方的api文件管理工具(小么雞等),大家有沒有遇到以下情況:

swagger完美(這就跟開發日常的開發習慣息息相關了,要及時更新**注釋)解決了以上的問題,swagger在api開發新版本或者迭代版本的時候,只需要更新swagger描述檔案,就可以自動生成介面文件和客戶端服務端**,做到呼叫端**、服務端**以及介面文件的一致性;

#region swagger配置services.addswaggergen(swg =>

#region swagger配置services.addswaggergen(swg =>

});var xmlpath = path.combine(bashpath, "study.netcore.xml");

swg.includexmlcomments(xmlpath, true);//這個是controller的注釋

新增實體類的說明:基本和api的配置一致,首先勾選xml文件檔案,然後在configureservices中修改swagger配置,如下:

#region swagger配置services.addswaggergen(swg =>

});var xmlpath = path.combine(bashpath, "

study.netcore.xml");

swg.includexmlcomments(xmlpath,

true);//

這個是controller的注釋

//model的xml檔案

var xmlmodelpath = path.combine(bashpath, "

study.netcore.model.xml");

swg.includexmlcomments(xmlmodelpath);

});#endregion

說到版本控制,我們第一時間想到的是git、svn等的源**版本管理器,版本控制,顧名思義,就是對程式**,檔案等的變更管理,多個版本保證**更改後有跡可循,可實時恢復之前版本;這就是專案的版本控制,而我們今天說的是對api的版本控制,下面我們借助swagger實現對api的版本控制。

首先先建乙個用於區分版本的列舉類如下:

namespace

study.netcore.swaggerhelper}}

接下來,我們開啟startup.cs類,在configureservices配置中心,修改swagger的配置如下:

private const string apiname = "study.netcore";

#region swagger配置

services.addswaggergen(swg => api",

description = $"

api" +version,

termsofservice = "

none",

contact = new swashbuckle.aspnetcore.swagger.contact

", email = "", url = ""

} });

});var xmlpath = path.combine(bashpath, "

study.netcore.xml");

swg.includexmlcomments(xmlpath,

true);//

這個是controller的注釋

var xmlmodelpath = path.combine(bashpath, "

study.netcore.model.xml

");//

model的xml檔案

swg.includexmlcomments(xmlmodelpath);

});#endregion

接著,找到配置啟動項的方法configure,修改swagger啟動**如下:

/** 之前只有乙個版本,所以固定寫死

* 遍歷介面版本,並倒敘展示

*/

typeof(apiversion).getenumnames().orderbydescending(ver => ver).tolist().foreach(version =>/swagger.json

", $"

studynetcore api ");

swg.routeprefix = ""

; });

});#endregion

執行如下(借助swagger來實現對api多版本的展示)如下:

自定義路由,新建apirouteattribute特性類,如下:

namespace

study.netcore.swaggerhelper

/[controler]/[action]

/// [attributeusage(attributetargets.class | attributetargets.method, allowmultiple = true, inherited = true

)]

public

class

apirouteattribute : routeattribute, iapidescriptiongroupnameprovider

//////

自定義路由建構函式,繼承基類路由

/// ///

public apirouteattribute(string actionname = "

[action]

") : base("

/api//[controller]/

" +actionname)

/////

///自定義版本+路由建構函式,繼承基類路由

/// ///

///public apirouteattribute(apiversion version, string actionname = "") : base($"

/api//[controller]/")}}

介面版本控制的使用

ES Kibana IK 安裝及配置,個人學習

注意 安裝es必須要有jdk1.8及其以上的環境 releases download v6.5.4 elasticsearch analysis ik 6.5.4.zip 2 tar zxvf gz c usr local 3 修改config elasticsearch.yml path.data...

個人學習總結及課程建議

個人學習總結 至此,這學期軟體工程這門課徹底結束了,是時候該總結一下這次課程改革給我的感受了。和以往的專業課不同的是,這次軟體工程恰好是第一次課程改革,落在了我們的頭上。起初我可能是拒絕的,因為古往今來,改革的第一批人總是不幸運的,他們會犧牲很多很多。但是在上課的過程中,我逐漸感覺到了不一樣的地方。...

個人學習模型

形成適合自己的學習模型,提高學習效率和能力。以理解關係代數的除法為例,分析為什麼難以理解抽象概念 1 沒有熟悉和理解元組 笛卡爾積 投影 差 的深刻含義。不熟悉容易產生恐懼和模糊的感覺,這會阻止進一步的學習和理解。2 沒有親手舉乙個例項。沒有親手舉具體的例項,產生的也是模糊不清的感覺,這也會阻止進一...