.Net Core2.1 WebAPI新增Swagger插件詳解
說(shuō)明
Swagger是一個(gè)WebAPI在線注解、調(diào)試插件,過(guò)去我們主要通過(guò)手工撰寫WebAPI接口的交互文檔供前端開發(fā)人員或外部開發(fā)者,
官網(wǎng)地址:https://swagger.io/。
但是在實(shí)際工作中,往往咋們的文檔工作通常落后于實(shí)際的環(huán)境,導(dǎo)致文檔和實(shí)際接口不一致,前后端開發(fā)人員苦不堪言。
Swagger的出現(xiàn)解放了接口文檔撰寫的麻煩也提高了前后端開發(fā)者的工作效率,所謂“工欲善其事,必先利其器 ”?,F(xiàn)在讓咋們
了解下在.NET Core 2.1下如何實(shí)現(xiàn)Swagger。
1、Nuget安裝依賴包
首先Nuget安裝Swashbuckle.AspNetCore
打開Nuget控制臺(tái)(程序包管理控制臺(tái)),鍵入下列命令
Install-Package Swashbuckle.AspNetCore
2、添加Swagger中間件
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().AddJsonOptions(options =>
{
//忽略循環(huán)引用
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
//不使用駝峰樣式的key
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
});
return RegisterAutofac(services);//注冊(cè)Autofac
}
引用Swashbuckle.AspNetCore.Swagger,并啟用中間件
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
// specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
app.UseVisitLogger();
app.UseMvc();
}
3、配置WebAPI項(xiàng)目屬性
1、雙擊Properties下的launchSettings.json,將launchUrl更新為swagger
F5結(jié)果如下:

4、新增注解
如上圖,雖然WebAPI已經(jīng)出來(lái)了,但是呢,并沒(méi)有發(fā)現(xiàn)我們?cè)贏ction上寫的注釋? 老司機(jī)應(yīng)該知道在Framework版本里我們需要
將WebAPI啟動(dòng)項(xiàng)屬性里更改“項(xiàng)目生產(chǎn)“一欄中新增XML文檔,.NetCore也是如此。如下圖:
保存后,按F5發(fā)現(xiàn)并木有生產(chǎn)注解,Why??? 那是因?yàn)槲覀儽仨毭鞔_告訴Swagger應(yīng)該從哪個(gè)路徑讀取WebAPI注解XML文件,更新Startup下的ConfigureServices。
參考下面代碼:
// Register the Swagger generator, defining 1 or more Swagger documents
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new Info { Title = "TestSystem", Version = "v1" });
//注入WebAPI注釋文件給Swagger
var xmlPath = Path.Combine(AppContext.BaseDirectory, "AirWebApi.xml");
options.IncludeXmlComments(xmlPath);
options.IgnoreObsoleteActions();
////options.IgnoreObsoleteControllers();
//// 類、方法標(biāo)記 [Obsolete],可以阻止【Swagger文檔】生成
options.DescribeAllEnumsAsStrings();
options.OperationFilter<FormDataOperationFilter>();
});
代碼不單單新增了注解,同時(shí)添加了阻止Swagger文檔生成的配置,通過(guò)讀取系統(tǒng)的[Obsolete]特性實(shí)現(xiàn)。
現(xiàn)在,讓我們?cè)倏纯唇Y(jié)果吧~
是不是很爽~~
還有,Swagger是支持授權(quán)登錄的哦,這個(gè)待研究。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
用javascript為DropDownList控件下拉式選擇添加一個(gè)Item至定義索引位置
用Javascript為DropDownList控件下拉式選擇添加一個(gè)Item至定義索引位置;準(zhǔn)備數(shù)據(jù),創(chuàng)建一個(gè)對(duì)象,將是存儲(chǔ)DropDownList控件每個(gè)Item數(shù)據(jù)2013-01-01
asp.net GridView導(dǎo)出到Excel代碼
asp.net GridView導(dǎo)出到Excel代碼,需要的朋友可以參考下。2009-07-07
ASP.NET MVC學(xué)習(xí)教程之Razor語(yǔ)法
這篇文章主要給大家介紹了關(guān)于ASP.NET MVC學(xué)習(xí)教程之Razor語(yǔ)法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05
Asp.Net程序目錄下文件夾或文件操作導(dǎo)致Session失效的解決方案
這篇文章主要介紹了Asp.Net程序目錄下文件夾或文件操作導(dǎo)致Session失效的解決方案,需要的朋友可以參考下2017-06-06
asp.net中利用Jquery+Ajax+Json實(shí)現(xiàn)無(wú)刷新分頁(yè)的實(shí)例代碼
本篇文章主要是對(duì)asp.net中利用Jquery+Ajax+Json實(shí)現(xiàn)無(wú)刷新分頁(yè)的實(shí)例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,需要對(duì)大家有所幫助2014-02-02
微軟ajax庫(kù)的使用方法(ajax.ajaxMethod)
使用AjaxMethod可以在客戶端異步調(diào)用服務(wù)端方法,簡(jiǎn)單地說(shuō)就是在JS里調(diào)用后臺(tái).cs文件里的方法,做一些JS無(wú)法做到的操作,如查詢數(shù)據(jù)庫(kù)2013-08-08
C# 無(wú)限級(jí)分類的實(shí)現(xiàn)
采用存儲(chǔ)過(guò)程實(shí)現(xiàn)遞歸邏輯,直接返回子分類列表的方式應(yīng)該有更好的性能,尤其是Web服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器不位于同一臺(tái)服務(wù)器上時(shí),更會(huì)受網(wǎng)絡(luò)影響。2009-02-02

