一 背景
隨着前端技術的不斷發展,各種框架逐漸成熟,前端 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自己造一個吧,造一個大家都能看懂的輪子。
四 使用技術
JcApiHelper,支持.net Core 2.0+ 版本(說明.Net Core 3.0請使用1.0.13版本 .Net Core 2.0請使用1.0.12版本)
.Net Standard 類庫項目 引入AspNetCore.Mvc.Core等相關nuget包
UI使用angular,引入Ant Design 的NG-ZORRO框架。
五 JcApiHelper優勢
1.使用簡單,只要在startup中調用app.UseJcApiHelper()即可引入
2.可按controller瀏覽接口,支持接口篩選查找
3.支持項目非根目錄部署和nginx代理
4.支持前端TypeScript類對象和請求服務代碼生成
5.在線http請求接口測試
6.WebSocket連接測試
7.Json格式化工具,支持自Json數據轉換為TypeScript對象.
六 可能存在的問題
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地址:https://apihelper.jccore.cn
八 項目源碼
.Net項目源碼:https://github.com/279328316/JcApiHelper
前端項目源碼:https://github.com/279328316/JcApiHelper.Html
如有問題,歡迎留言指教.