Swagger作為一款非常流行的API文件生成工具,相信很多小夥們都在用!用多了可能會覺得它介面醜、功能弱。今天給大家推薦一款工具Torna,配合Swagger使用可以搭建介面漂亮、功能強大的API文件網站,希望對大家有所幫助!
SpringBoot實戰電商專案mall(50k+star)地址:https://github.com/macrozheng/mall
Torna簡介
Torna是一套企業級介面文件解決方案,可以配合Swagger使用。它具有如下功能:
- 文件管理:支援介面文件增刪改查、介面除錯、字典管理及匯入匯出功能;
- 許可權管理:支援介面文件的許可權管理,同時有訪客、開發者、管理員三種角色;
- 雙模式:獨創的雙模式,
管理模式
可以用來編輯文件內容,瀏覽模式
純粹查閱文件,介面無其它元素干擾。
Torna專案架構
Torna是一個前後端分離專案,後端使用SpringBoot+MyBatis來實現,前端使用Vue+ElementUI來實現,技術棧非常主流!它不僅可以搭建API文件網站,還是個非常好的學習專案,讓我們先來看看它的專案架構。
- 首先我們需要下載Torna的原始碼,下載地址:https://gitee.com/durcframewo...
- 下載成功後,將程式碼匯入到IDEA中,專案結構如下;
- 我們再來看下
server
模組的結構,一個非常標準的SpringBoot專案;
- 再來看下
front
模組的結構,一個非常標準的Vue專案,值得學習!
安裝
接下來我們把Torna執行起來,體驗一下它的功能,這裡提供Windows和Linux兩種安裝方式。
Windows
下面我們來介紹Torna在Windows下的安裝方法,如果你想深入學習Torna的話可以採用此種方式。
後端執行
- 首先建立一個資料庫
torna
,然後匯入專案中的mysql.sql
指令碼,匯入成功後,表結構如下;
- 修改專案的配置檔案
server/boot/src/main/resources/application.properties
,修改對應的資料庫連線配置;
# Server port
server.port=7700
# MySQL host
mysql.host=localhost:3306
# Schema name
mysql.schema=torna
# Insure the account can run CREATE/ALTER sql.
mysql.username=root
mysql.password=root
- 然後執行專案啟動類
TornaApplication
的main方法,控制檯列印如下資訊表示啟動成功。
前端執行
- 進入前端專案目錄
front
,執行npm install
命令安裝依賴;
- 此時如果遇到
node-sass
無法安裝的情況,可以直接使用如下命令安裝;
npm i node-sass --sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
- 依賴安裝完成後,可以通過
npm run dev
命令啟動專案,啟動成功後訪問地址:http://localhost:9530/
- 通過體驗賬號密碼
admin@torna.cn:123456
可以訪問Torna服務,介面還是不錯的!
Linux
在Linux下使用Docker安裝Torna是非常簡單的,如果你只想用Torna來做API文件服務的話可以採用這種方式。
- 首先我們需要下載Torna的Docker映象;
docker pull tanghc2020/torna:latest
- 下載完成後將配置檔案
application.properties
拷貝配置檔案到/mydata/torna/config
目錄下,並修改資料庫配置;
# Server port
server.port=7700
# MySQL host
mysql.host=192.168.3.101:3306
# Schema name
mysql.schema=torna
# Insure the account can run CREATE/ALTER sql.
mysql.username=root
mysql.password=root
- 然後通過如下命令執行Torna服務;
docker run -p 7700:7700 --name torna \
-v /mydata/torna/config:/torna/config \
-d tanghc2020/torna:latest
- 由於映象中直接包含了前端和後端專案,所以可以直接使用,訪問地址:http://192.168.3.101:7700
使用
Torna支援從多種工具匯入介面文件,包括Swagger、smart-doc、OpenAPI、Postman等,接下來我們來體驗下它的功能!
結合Swagger使用
Torna能大大增強Swagger的功能,並且介面足夠美觀,下面我們來體驗下!
- 在使用之前,我們需要在Torna中進行配置才行,首先我們來配置一個開放使用者,新建一個
macro
的賬號,記住AppKey
和Secret
;
- 然後建立一個專案
mall-tiny-trona
;
- 接下來建立一個模組,開啟
OpenAPI
標籤,獲取請求路徑
和token
;
- 之後在使用Swagger的專案中整合Torna外掛,非常簡單,新增如下依賴即可;
<!-- Torna Swagger 外掛 -->
<dependency>
<groupId>cn.torna</groupId>
<artifactId>swagger-plugin</artifactId>
<version>1.2.6</version>
<scope>test</scope>
</dependency>
- 然後在
resources
目錄下新增配置檔案torna.json
,配置說明參考註釋即可;
{
// 開啟推送
"enable": true,
// 掃描package,多個用;隔開
"basePackage": "com.macro.mall.tiny.controller",
// 推送URL,IP埠對應Torna伺服器
"url": "http://localhost:7700/api",
// appKey
"appKey": "20211103905498418195988480",
// secret
"secret": "~#ZS~!*2B3I01vbW0f9iKH,rzj-%Xv^Q",
// 模組token
"token": "74365d40038d4f648ae65a077d956836",
// 除錯環境,格式:環境名稱,除錯路徑,多個用"|"隔開
"debugEnv": "test,http://localhost:8088",
// 推送人
"author": "macro",
// 開啟除錯:true/false
"debug": true,
// 是否替換文件,true:替換,false:不替換(追加)。預設:true
"isReplace": true
}
- 接下來通過呼叫
SwaggerPlugin
的pushDoc
方法來推送介面文件到Torna;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MallTinyApplicationTests {
@Test
public void pushDoc(){
// 將文件推送到Torna服務中去,預設查詢resources下的torna.json
SwaggerPlugin.pushDoc();
}
}
- 推送成功後,在介面列表將顯示如下介面資訊;
- 檢視一下介面的詳細資訊,還是很全面的,介面也不錯!
- 把我們的專案執行起來,就可以直接在上面進行介面除錯了,呼叫下登入介面試試;
- 如果我們想設定公共請求頭的話,比如用於登入認證的
Authorization
頭,可以在模組配置
中進行配置;
- 在後端介面沒有完成前,我們如果需要Mock資料的話,可以使用Mock功能;
- 這裡我們對登入介面進行了一下Mock,當然你也可以使用Mock指令碼,這下只要介面定義好,前端就可以使用Mock的資料聯調了。
結合smart-doc使用
smart-doc是一款無註解侵入的API文件生成工具,具體使用可以參考《smart-doc使用教程》 ,這裡介紹下它與Torna結合使用。
- 首先修改
mall-tiny-smart-doc
專案的smart-doc配置檔案smart-doc.json
,新增如下關於Torna的配置;
{
// torna平臺對接appKey
"appKey": "20211103905498418195988480",
//torna平臺appToken
"appToken": "b6c50f442eb348f48867d85f4ef2eaea",
//torna平臺secret
"secret": "~#ZS~!*2B3I01vbW0f9iKH,rzj-%Xv^Q",
//torna平臺地址,填寫自己的私有化部署地址
"openUrl": "http://localhost:7700/api",
//測試專案介面環境
"debugEnvName":"測試環境",
//測試專案介面地址
"debugEnvUrl":"http://localhost:8088"
}
- 由於smart-doc的Maven外掛已經自帶推送文件到Torna的功能,我們只需雙擊
smart-doc:torna-rest
按鈕即可;
- 接下來在Torna中,我們就可以看到相關的介面文件了,非常方便!
總結
當一種工具變得越來越流行,但是某些功能需求又滿足不了時,往往會有一些增強工具產生,Torna對於Swagger來說正是這樣一種工具。Torna的文件介面和除錯功能明顯比Swagger高大上多了,而且還增加了許可權管理功能,文件的安全性大大增強,大家覺得不錯的話可以嘗試下它!
參考資料
官方文件:http://torna.cn/
專案原始碼地址
https://github.com/macrozheng...
本文 GitHub https://github.com/macrozheng/mall-learning 已經收錄,歡迎大家Star!