一 背景
隨著前端技術的不斷髮展,各種框架逐漸成熟,前端 Angular,React,Vue 三分天下。再加上移動端的崛起,前後端分離開發成為主流,前端後端程式碼混合開發的方式淪為被淘汰的局面。如今 MVC 框架中的 View 已經名存實亡,大多數 Asp.Net Core 專案都只提供 Api 介面服務。在前後端分離開發過程中,Api介面成為了連線前後端的唯一橋樑。
所以溝通清楚Api介面成為了重中之重。Api介面文件就成為了必不可少的檔案。
二 現狀
現在有很多的第三方介面文件維護網站,比如Eolinker,EasyAPI等。第三方的API介面服務,介面大多需要手動錄入,介面變動後需要手動修改。維護比較繁瑣。.net裡面的Api介面文件當然要提下Swagger了。Swagger兼具了Api文件管理和測試的功能。是一個比較成熟的API介面文件管理工具。
三 問題
既然已經有Swagger了為啥還要自己造輪子呢?介紹下我在使用過程中碰到的問題。因為我喜歡用Mvc專案模板,form表單格式可以滿足大多數的需求。Swagger在webApi專案中可以正常使用,在Mvc模板中引入卻不工作,無法生成介面文件。可能是哪配置的不對。拉下Swagger的原始碼除錯下,開啟Swagger的專案基本上蒙圈了。引入專案中除錯跟入也沒搞懂。一直沒看懂是在哪生成的方法介面資訊。
從直覺上來講,生成文件的思路應該比較清晰,從程式集讀取介面,類物件,屬性相關資訊,然後再通過解析xml說明檔案就可以了。So自己造一個吧,造一個大家都能看懂的輪子。
四 使用技術
.Net Standard 類庫專案 引入AspNetCore.Mvc.Core等相關nuget包
UI使用angular目前最新版本8.0,引入Ant Design 的NG-ZORRO框架。
五 JcApiHelper優勢
1.使用簡單,只要在startup中呼叫app.UseJcApiHelper()即可引入
2.可按controller瀏覽介面,支援介面篩選查詢
3.支援專案非根目錄部署和nginx代理
六 即將加入的功能
支援前端TypeScript類物件和請求服務程式碼生成
線上http請求介面測試
WebSocket連線測試
Json格式化工具
七 可能存在的問題
1.介面資訊保安問題
如果不想在釋出版本中暴露介面資訊,可以只在測試環境時,IHost.IsDev中引入。在ASP.NET Core專案中可以通過環境變數來控制環境切換,詳細介紹參照https://www.cnblogs.com/tdfblog/p/Environments-LaunchSettings-in-Asp-Net-Core.html
2.介面授權攔截問題
如果你的專案做了統一授權管理,請在許可權處理Filter中允許匿名訪問。
ApiHelper介面Controller和Action都帶有AllowAnoumous特性。如在許可權Filter中未忽略該特性,可能會導致Helper介面被攔截無法訪問。
八 使用方法
1.專案需要開啟Xml文件生成
2.專案中引入Jc.ApiHelper包
在Mvc/WebApi專案中,開啟Nuget包管理,搜尋Jc.ApiHelper,然後選擇Jc.ApiHelper目前最新版本安裝
3.啟用JcApiHelper
在StartUp檔案,Configure方法中,加入如下程式碼,至此,JcApiHelper即啟用完成.
app.UseJcApiHelper();
4.瀏覽效果
執行專案,然後訪問http://localhost:5000/ApiHelper.
點選現在開始或選單上的ApiHelper進入介面瀏覽頁面
點選介面名稱,檢視介面詳情
臨時線上Demo地址:http://beipiaohome.cn/ApiHelper (個人雲主機,臨時線上測試使用,建議自己下載Demo測試)
Demo原始碼:https://github.com/279328316/JcApiHelper
九 關於開源和後續功能開發工作
目前專案基本功能已有,專案從起初有想法至今有2個月時間.而且是在業餘時間開發.後續功能會陸續新增.
專案功能基本完善後,會將主要原始碼新增到https://github.com/279328316/JcApiHelper中.
如有問題歡迎隨時留言指教.