天天看點

Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI

<code>Swagger</code>大家都不陌生,<code>Swagger (OpenAPI)</code> 是一個與程式設計語言無關的接口規範,用于描述項目中的 <code>REST API</code>。它的出現主要是節約了開發人員編寫接口文檔的時間,可以根據項目中的注釋生成對應的可視化接口文檔。

<code>OpenAPI</code> 規範是描述 <code>API</code> 功能的文檔。該文檔基于控制器和模型中的 <code>XML</code>和<code>屬性</code>注釋。它是 <code>OpenAPI</code> 流的核心部分,用于驅動諸如 <code>SwaggerUI</code> 之類的工具。

Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI

<code>.NET</code> 平台下的兩個主要實作<code>Swagger</code>的包是 Swashbuckle 和 NSwag。今天我們從 <code>Swashbuckle</code> 開始了解。

Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI
Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI
Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI

在實際開發中,如果所有接口都展示在一起非常不利于相關人員查找,我們可以根據業務邏輯對相關接口進行分組,比如:登入、使用者、訂單、商品等等。

Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI

前幾天,前端同僚和我吐槽,<code>Swagger</code>的原生<code>UI</code>太醜了,又不夠直覺,想找個接口還得一個個收縮展開,總之就是很難用。

不夠直覺

不友善查找

有了上面的兩點需求何不自己實作一套<code>UI</code>呢?(最終還是用了第三方現成的)

文章最開始有提到<code>OpenAPI</code> 對應的 <code>json</code> 内容,大家也可以在浏覽器的控制台看看,<code>swagger ui</code> 的資料源都來自于一個叫 <code>swagger.json</code> 的檔案,資料源都有了,根據資料源再做一套 <code>UI</code> 也就不是什麼難事了。

Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI
Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI
Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI
Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI
Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI

<code>Swagger UI</code>的功能還是比較多的,比如:詳情、調試。如果想自己實作一套<code>UI</code>要做的工作還很多。是以,拿來主義永不過時,最終我還是選擇了第三方開源的項目:<code>Knife4j</code>。

使用起來也是非常簡單,先引用包:<code>IGeekFan.AspNetCore.Knife4jUI</code>,然後在<code>Startup.Configure</code>中将 <code>app.UseSwaggerUI</code> 替換為:

Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI
Asp.Net Core基礎篇之:內建Swagger文檔與自定義Swagger UI

繼續閱讀