JcApiHelper 簡單好用的.Net ApiHelper

張家華發表於2019-07-11

一 背景

隨著前端技術的不斷髮展,各種框架逐漸成熟,前端 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.專案中引入Jc.ApiHelper包

在Mvc/WebApi專案中,開啟Nuget包管理,搜尋Jc.ApiHelper,然後選擇Jc.ApiHelper目前最新版本安裝

2.啟用JcApiHelper

在StartUp檔案,Configure方法中,加入如下程式碼,至此,JcApiHelper即啟用完成.

app.UseJcApiHelper();

3.瀏覽效果

執行專案,然後訪問http://localhost:5000/ApiHelper.

點選現在開始或選單上的ApiHelper進入介面瀏覽頁面

 

臨時線上Demo地址:http://beipiaohome.cn (個人雲主機,臨時線上測試使用,建議自己下載Demo測試)

Demo原始碼:https://github.com/279328316/JcApiHelper

九  關於開源和後續功能開發工作

目前專案基本功能已有,專案從起初有想法至今有2個月時間.而且是在業餘時間開發.後續功能會陸續新增.

專案功能基本完善後,會將主要原始碼新增到https://github.com/279328316/JcApiHelper中.

如有問題歡迎隨時留言指教.

 

相關文章