一、需求點
自己有時候寫前端的時需要后端接口來實現聯調,這個時候必須開啟一個后端服務(一般都是在現有的后端服務里添加接口,因此啟動很慢,畢竟已經是一個寫了很多內容的大項目了),里面得寫蠻多代碼,很繁瑣,而且如果接口數據改了還得修改代碼重啟,特別是SpringBoot這類很重的框架每次重啟都很久;
后續百度了一下也有一些網站提供接口mock功能,但是都是要注冊,而且網速巨慢,如果沒網了還無法聯調;
當然,用的如果是vue、angular之類的框架,它們是可以集成一些工具來實現模擬后端服務的,但是個人覺得不好用,因為它的實時性不好,也不夠靈活,還得下載各種依賴什么的,跟前端項目也耦合;
基於上面的需求,用go寫了一個跨平台的后端接口模擬器;
目前它支持指定服務地址,可以以項目為接口集,每個項目里又通過配置不同的接口,接口的返回數據又可以單獨配置到文件,或者直接寫在接口配置里也可以(數據量小的話);
而且支持文件動態監測,發現保存了文件會自動更新配置(目前沒有寫的很健壯,所以請完整修改配置后再保存,比如你的響應數據別寫一半JSON就保存了)
二、使用方式:
我這邊自己打包的是Linux平台的,大家可以自行打包為自己需要的平台(搜Go交叉編譯,加些環境變量即可,如果不加則打包的就是自己編譯所在平台的版本);
如果你有Python3.x,我這邊已經寫了一個pack.py腳本,運行它就能自動打包到項目的output目錄里;(如果你不會的話也可以留言給我我幫你打包好給你)
打包后的zip文件內部結構為:
1.mock-projects目錄,里面存放了各個項目的具體配置;
1.1.mock-projects/demo01目錄,表示這個是用於配置demo01這個項目的接口集;
1.2.mock-projects/demo01/project.json文件,用於配置demo01這個項目有哪些接口,示例內容如下:
{ "prefix": "/demo01", "APIs": [ { "API": "/test01", "responseValue": { "name": "silentdoer是否" } }, { "API": "/test02", "responseRef": "responses/test02.json" } ] }
其中prefix值表示這個項目的url前綴是什么;APIs則是定義了有哪些具體接口,API是接口子路徑,responseValue是表示這個接口的響應數據,而responseRef則是表示接口響應數據的配置文件路徑;
1.3.mock-projects/demo01/responses目錄存放了demo01項目接口的所有響應內容配置;
2.app.json用來配置有哪些項目,其內容為:
{ "autoRefresh": true, "mockProjects": [ { "name": "demo01ss", "path": "mock-projects/demo01" } ] }
autoRefresh表示是否需要動態刷新,mockProjects配置所有的項目【可自行增減】;
3.readme.txt,說明文件
4.service_mocker,可執行文件,用於啟動服務模擬器(可通過-a 'localhost:8888'參數來修改監聽地址);
注意,上面的配置是可以實時更新的,但是要求改完全來再保存,別改一半就保存了,比如加projects,別"path"只寫了"pat就保存了,我這邊沒做這么多的條件判定;
還有就是如果是Linux,最好是用vi來修改,用gedit之類的工具修改不知道為什么文件監聽庫會出問題。。(以后看看有沒有更好的庫)
三、項目:
github地址:https://github.com/Silentdoer/service-mocker