說起前後端,避免不了一系列的協作問題,包括但不限于接口沒有及時給出、文檔沒有及時編寫、接口寫好後又時好時壞、系統未完成造資料困難……
先評估現在常見的解決方案
直接在用到的地方寫死資料。例如直接把資料寫到模版上,或者變量值的聲明位置,或者一個 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