天天看點

GitHub 新項目!快速生成接口文檔和模拟資料,開發聯調效率杠杠滴

作者:GitHub項目精選

說起前後端,避免不了一系列的協作問題,包括但不限于接口沒有及時給出、文檔沒有及時編寫、接口寫好後又時好時壞、系統未完成造資料困難……

先評估現在常見的解決方案

直接在用到的地方寫死資料。例如直接把資料寫到模版上,或者變量值的聲明位置,或者一個 json 檔案。

  • 優點
    • 簡單
    • 見效快
  • 缺點
    • 死資料,編寫麻煩
    • 可維護性差
    • 造成大量備援代碼

項目代碼内分子產品編寫 mock 代碼。例如建立專門的 mock 目錄,使用 mockjs 進入 ajax 攔截實作接口和資料模拟。要對于上一個方案而言,造資料容易得多,并且減少了代碼入侵。

  • 優點
    • 外置依賴最小
  • 缺點
    • 解耦性差
    • 浏覽器看不見請求
    • 不支援檔案流

自己實作一個服務端。例如使用 express 這些接口庫,專門開一個項目來做接口模拟,這要求有一定的額外知識儲備。

  • 優點
    • 定制性最強
  • 缺點
    • 需要額外維護一個項目
    • 需要自己開發對應的資料生成及其他功能

使用線上的模拟平台,例如一些線上 mock 服務。

  • 優點
    • 互動良好,多人協作
  • 缺點
    • api 路徑定制性差
    • 或有資料敏感風險
    • 不支援離線開發
    • 不支援檔案流

關于 mockm 能給到的

  • 小巧易用
    • 安裝包 430KB,解包大小 1.79 MB
    • npm 一鍵安裝,跨平台使用
    • 支援 UI 界面操作
  • 接口自動建立
    • 支援 Restful API,給一個對象即可生成增删改查一系列接口
    • 支援 WebSocket 實時通訊
    • 支援檔案流,例如上傳,下載下傳
  • 資料生成
    • 支援使用 Mockjs 文法
    • 經過增強和優化的 Mockjs 文法
    • 支援使用原生 js 寫資料 (資料類型選擇為 eval 即可)
    • 支援批量自動翻譯和轉換
    • 支援聲明類型和描述
  • 輔助調試
    • 支援儲存請求記錄
    • 支援請求重放,編輯
    • 支援精簡版 postman
    • 自動帶參調試,無需登入
    • 支援自動允許跨域
    • 支援 api 攔截,注入,響應修改
    • 支援遠端調試,一個屬性完成内網穿透,無需花生殼,nginx,無需新增賬號
  • 輔助開發
    • 開源免費
    • 高可定制
    • 開放配置,直接支援 nodejs 相關生态
    • 修改實時生效
  • 輔助部署
    • 資料和配置可移植
    • 自帶程序守護

看起來比較抽象,簡單來說 mockm 是一個跨平台,前後端可用的接口工具,類似一個便捷的服務端模拟服務,然後附帶一些聯調接口時會用到的功能,例如精簡版 postman,可以自動帶 token 調試接口,無需擔心帳号被擠,請求資訊可重放和可查閱。

由于是一個服務端的實作,支援更多的模拟場景,例如檔案的上傳下載下傳、靜态資源通路、WebSocket實時通訊,接口代理和攔截……經過封裝,很簡單就能實作所要模拟的接口。

以下是一些示例。

建立 API

api: {
  // 建立一個不區分 http 方法的接口,傳回 hello
  '/api/1': `hello`,
  // 建立一個 post 方法的接口, 并傳回接收到的值
  'post /api/2' (req, res) {
    res.json({desc: `你傳入的值`, data: req.query}) // req.query 是 url 上的查詢參數
  },
  // 建立一個 websocket 接口,并傳回收到的消息
  'ws /api/3' (ws) {
    ws.on('message', msg => ws.send(msg))
  }
},           

從文本批量轉換為接口和資料

為了友善快速造資料,可以 從文本批量轉換為接口和資料,假設有這樣一個接口: /api/user,隻需給出以下格式的内容:

昵稱
郵箱
頭像
孩子
- 年齡
- 出生日期
- 手機号           

當然,響應的格式是完全可以自定義的。如果覺得這個功能比較雞肋,也可以看看其他功能。

快速生成 Restful API

假設我要寫一個部落格文章的清單,并且要實作添加文章、查詢文章、分頁、模糊搜尋、删除、修改等各種功能的接口。那麼隻需添加以下内容:

module.exports = {
  db: {
    'blogs': [
      {
        id: 1,
        content: `mockm 是一款便于使用,功能靈活的接口工具. 看起來不錯~`,
        title: `認識 mockm 的第一天`,
      },
    ],
  },
}
           

這時候上面要實作的所有接口已經實作了。 這裡我用 http 作為請求工具簡單表示幾個功能,你可以使用你喜歡的工具發送請求。

# 檢視 id 為 1 的博文詳情
http :9000/blogs/1

# 建立一篇關于同僚的文章
http post :9000/blogs title=同僚的一天 content=今天他的生活還是同樣的苦澀

# 擷取所有文章
http :9000/blogs

# 查詢所有含有 `苦澀` 的文章
http :9000/blogs?q=苦澀

# 更多示例省略...           

  • GitHub:https://github.com/wll8/mockm
  • 文檔:https://hongqiye.com/doc/mockm

繼續閱讀