用Go寫一個后端接口模擬器


一、需求點

自己有時候寫前端的時需要后端接口來實現聯調,這個時候必須開啟一個后端服務(一般都是在現有的后端服務里添加接口,因此啟動很慢,畢竟已經是一個寫了很多內容的大項目了),里面得寫蠻多代碼,很繁瑣,而且如果接口數據改了還得修改代碼重啟,特別是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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM