首頁>技術>

最近我看了一個.NET專案,驚奇的發現專案中不單隻集成了SwaggerUI,還集成了SwaggerUI的增強版Knite4jUI。說起Knife4j可能大多數.NET程式設計師都感到陌生,因為這個技術最早出現在java,而它的.NET版本是最近一個月才推出的。

在講解Knife4jUI之前,我們先回顧一下Swagger。

什麼是Swagger

Swagger 是一個基於OpenAPI規範且完整的框架,用於生成、描述、呼叫和視覺化 RESTful 風格的 Web 服務。(OpenAPI規範是RESTful API設計的行業標準)

為什麼要使用Swagger

隨著三大前端框架的出現(vue、react、anguar),前後端分離的開發方式變得越來越流行。前端開發者和後端開發者只需要專注自己擅長的領域即可。但這種開發方式存在一個問題,就是如何保證介面文件是最新的。在過去我們常常使用Word的形式提供介面文件,在介面對接的過程當中經常會出現介面文件與實際不一致的情況,前端開發人員看到的不是最新的介面文件,而後端開發人員需要花大量的時間和精力去維護最新的文件。為了解決這個問題,Swagger應運而生。

什麼是Knife4jUI

在講解.NET的Knife4jUI之前,我先講講java的Knife4j,

knife4j是為Java MVC框架整合Swagger生成Api文件的增強解決方案,前身是swagger-bootstrap-ui。取名knife4j是希望它能像一把匕首一樣小巧、輕量、並且功能強悍,也是希望把它做成一個為Swagger介面文件服務的通用性解決方案,不僅僅只是專注於前端Ui前端。

java有的東西,.NET 怎麼可以缺少。最近一個月,. NET也推出了Knife4j UI,一個增強版本的swagger ui 庫:IGeekFan.AspNetCore.Knife4jUI。

knife4jknife4j-vue-v3(不是vue3,而是swagger-ui-v3版本)Swashbuckle.AspNetCoreSwashbuckle.AspNetCore.SwaggerSwashbuckle.AspNetCore.SwaggerGen安裝包到ASP.NET Core應用程式
通過包管理工具安裝 :Install-Package IGeekFan.AspNetCore.Knife4jUICLI命令列安裝 : dotnet add package IGeekFan.AspNetCore.Knife4jUI
服務配置(ConfigureServices),CustomOperationIds和AddServer是必須的。
 services.AddSwaggerGen(c => { c.SwaggerDoc("v1",new OpenApiInfo{Title = "API V1",Version = "v1"}); c.AddServer(new OpenApiServer() { Url = "", Description = "vvv" }); c.CustomOperationIds(apiDesc => { var controllerAction = apiDesc.ActionDescriptor as ControllerActionDescriptor; return controllerAction.ControllerName+"-"+controllerAction.ActionName; }); });
中介軟體配置(Configure)
app.UseSwagger();app.UseKnife4UI(c =>{ c.RoutePrefix = ""; // serve the UI at root c.SwaggerEndpoint("/v1/api-docs", "V1 Docs");});app.UseEndpoints(endpoints =>{ endpoints.MapControllers(); endpoints.MapSwagger("{documentName}/api-docs");});
IGeekFan.AspNetCore.Knife4jUI專案原始碼

如果想深入了解IGeekFan.AspNetCore.Knife4jUI。

可以下載原始碼學習,原始碼地址:https://github.com/luoyunchong/IGeekFan.AspNetCore.Knife4jUI

文件資訊引數說明: 包括引數名稱、引數說明、請求型別、是否必須、資料型別、schema響應狀態:包括 狀態碼、說明、schema響應引數:包括引數名稱、引數說明、型別、schema相應示例:包括 返回json格式的響應示例,包括對應的欄位說明

文件資訊的詳細程度已經到了令人髮指的程度。

Swagger Models

Swagger Models能夠清晰的看到,每一個model的對應屬性的名稱、型別、說明、schema等資訊,甚至連必填項都可以標紅(對應C#的Required特性)。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 如何使用HTML、CSS和JS輕鬆構建桌面應用程式