從壹開始前後端分離【 .NET Core2.0 +Vue2.0 】框架之三 || Swagger的使用 3.1
更新
經常有小夥伴遇到這個錯誤
這是因為介面json文件定義和呼叫不是一個
1、定義:
ConfigureServices 方法中的 services.AddSwaggerGen 註冊的一個名字 c.SwaggerDoc("v1",
2、呼叫:
Configure 方法中的 app.UseSwaggerUI(c => 呼叫 c.SwaggerEndpoint("/swagger/v1/swagger.js;
看看兩者是否一致
WHY
上文中已經說到,單純的專案介面在前後端開發人員使用是特別不舒服的,那所有要推薦一個,既方便又美觀的介面文件說明框架,噹噹噹,就是Swagger,隨著網際網路技術的發展,現在的網站架構基本都由原來的後端渲染,變成了:前端渲染、後端分離的形態,而且前端技術和後端技術在各自的道路上越走越遠。
前端和後端的唯一聯絡,變成了API介面;API文件變成了前後端開發人員聯絡的紐帶,變得越來越重要,swagger就是一款讓你更好的書寫API文件的框架。
沒有API文件工具之前,大家都是手寫API文件的,在什麼地方書寫的都有,有在confluence上寫的,有在對應的專案目錄下readme.md上寫的,每個公司都有每個公司的玩法,無所謂好壞。
書寫API文件的工具有很多,但是能稱之為“框架”的,估計也只有swagger了。
HOW
下面開始引入swagger外掛
方法有兩個:
1)可以去swagger官網或github上下載原始碼,然後將原始碼(一個類庫)引入自己的專案;
2)直接利用NuGet包新增程式集應用(這裡就是前邊說的 在以後的開發中,Nuget無處不在)。
右鍵專案中的 Dependencies -- > Manage Nuget Packags --> Browse --> Search "Swashbuckle.AspNetCore" --> Install
然後就在專案的Nuget依賴裡看到剛剛引入的Swagger
圖 2
這個時候,你可以試一下,當然是不可以的,還記得上文說的,.Net Core 都需要一個程式入口麼,對就是Startup.cs檔案
1、開啟Startup.cs類,編輯ConfigureServices類
public void ConfigureServices(IServiceCollection services) { services.AddMvc(); #region Swagger services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Version = "v0.1.0", Title = "Blog.Core API", Description = "框架說明文件", TermsOfService = "None", Contact = new Swashbuckle.AspNetCore.Swagger.Contact { Name = "Blog.Core", Email = "[email protected]", Url = "https://www.jianshu.com/u/94102b59cc2a" } }); }); #endregion }
2、編輯Configure類
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } #region Swagger app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1"); }); #endregion app.UseMvc(); }
3、到這,已經完成swagger的新增,F5 執行除錯,在域名後面輸入/swagger,http://localhost:54067/swagger/index.html 點選回車,噹噹噹 出來啦
圖 3
圖 4
既美觀又快捷,這樣以後釋出出去,前後端開發人員就可以一起開發了,嗯!不錯!
WHAT
好啦,本節基本就是這裡了,你簡單瀏覽後,會了解到,什麼是Swagger,它如何建立使用,如何執行的,但是,細心的你會發現一些問題
NEXT
如何直接F5執行,首頁無法載入?
介面雖有,但是卻沒有文字文件說明?
對於介面是如何加許可權驗證的?
如何釋出到伺服器,大家一起介面開發呢?
專案開發中的實體類是如何在Swagger中展示的?
讓我們帶著這些問題,繼續瀏覽下一篇吧,Swagger 3.2 配置
ღ 網友反饋ღ
@提出:可以將Swagger的UI頁面配置在Configure的開發環境之中
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); #region Swagger app.UseSwagger(); app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "ApiHelp V1"); }); #endregion } app.UseMvc(); }