調(diào)提前三天)
簡介這是一款面向前端開發(fā)者與接口調(diào)試人員的HTTP自動(dòng)回復(fù)請求軟件即一鍵Mock工具用于解決后端接口尚未完成時(shí)前端開發(fā)受阻的痛點(diǎn)。無需搭建傳統(tǒng)Mock服務(wù)器或安裝外部插件通過直觀界面即可創(chuàng)建、編輯和管理模擬接口按接口文檔快速配置數(shù)據(jù)并一鍵啟動(dòng)服務(wù)實(shí)現(xiàn)接口即時(shí)調(diào)試與測試。資源包共33個(gè)文件約5.36MB以dll動(dòng)態(tài)庫、xml配置說明、pdf使用與更新文檔、config配置、db數(shù)據(jù)庫及exe主程序?yàn)橹骱w運(yùn)行所需的依賴組件與說明資料運(yùn)行環(huán)境為Win10 x64依賴.NET Framework 4.6.2。目前已有490人學(xué)習(xí)下載。借助該工具開發(fā)者可擺脫繁瑣的Mock服務(wù)搭建流程快速完成接口模擬與數(shù)據(jù)測試提升開發(fā)效率與質(zhì)量適合需要靈活調(diào)試接口的前端及測試人員使用。1. 前端等接口等到崩潰這個(gè)一鍵 Mock 工具把后端聯(lián)調(diào)提前了三天上周三下午前端小陳在群里發(fā)了第 17 條消息“后端接口好了沒我這邊頁面全卡在 loading 上?!焙蠖嘶亓司洹斑€在聯(lián)調(diào)明天給你”。這種場景你肯定不陌生——前端頁面骨架搭完了樣式調(diào)好了就差數(shù)據(jù)可后端接口遲遲出不來。傳統(tǒng)做法是自己搭個(gè) Mock 服務(wù)器裝 Node、配 express、寫路由、造數(shù)據(jù)一套下來半小時(shí)沒了改個(gè)字段還得重啟服務(wù)。HttpAutoResponseMessage 這個(gè)工具就是沖著這個(gè)痛點(diǎn)來的一個(gè) exe 雙擊就能跑的 HTTP 自動(dòng)回復(fù)請求軟件本質(zhì)是個(gè)輕量級(jí) Mock 服務(wù)端。它把“創(chuàng)建接口→填返回?cái)?shù)據(jù)→啟動(dòng)服務(wù)”壓縮到三步不需要裝 Node、不需要寫配置文件、不依賴任何外部插件。適合誰用前端開發(fā)在等后端接口時(shí)自測、測試人員模擬異常返回、甚至后端自己臨時(shí)擋一下聯(lián)調(diào)請求。V1.1.6 版本W(wǎng)in10 x64 直接跑依賴 .NET Framework 4.6.2下面我把這個(gè)包拆開從文件結(jié)構(gòu)到實(shí)際配置再到幾個(gè)我踩過的坑一次講清楚。2. 拆開壓縮包文件清單里藏著哪些關(guān)鍵依賴2.1 從文件列表反推技術(shù)棧拿到Http自動(dòng)回復(fù)請求軟件(一鍵Mock工具)V1.1.6.zip之后別急著雙擊 exe。先看目錄里有什么這決定了你機(jī)器上要裝什么、出問題該查哪里。我把關(guān)鍵文件按功能分了三類文件/目錄作用缺失后果HttpAutoResponseMessage.exe主程序入口無法啟動(dòng)HttpAutoResponseMessage.exe.config運(yùn)行時(shí)配置綁定 .NET 版本和數(shù)據(jù)庫啟動(dòng)報(bào)配置錯(cuò)誤DataServer.dbSQLite 數(shù)據(jù)庫存 Mock 接口和返回?cái)?shù)據(jù)接口列表為空System.Data.SQLite.dllx64/x86/SQLite.Interop.dllSQLite 托管與非托管驅(qū)動(dòng)讀寫數(shù)據(jù)庫失敗EntityFramework.dllEntityFramework.SqlServer.dllORM 框架操作數(shù)據(jù)庫數(shù)據(jù)層初始化異常Newtonsoft.Json.dllJSON 序列化處理返回體返回?cái)?shù)據(jù)格式錯(cuò)亂MQTTnet.dllMQTT 協(xié)議支持用于消息推送場景MQTT 相關(guān)功能不可用log4net.dlllog4net.config日志組件排錯(cuò)時(shí)無日志可看Log/LogError、Log/LogInfo日志輸出目錄同上這里有個(gè)細(xì)節(jié)值得注意包里同時(shí)帶了x64和x86兩個(gè)SQLite.Interop.dll。這不是冗余而是因?yàn)?SQLite 的非托管代碼必須和進(jìn)程位數(shù)匹配。你的系統(tǒng)是 64 位但如果你用 32 位的宿主進(jìn)程去加載就得走 x86 那份。常見做法是讓程序自己按當(dāng)前進(jìn)程位數(shù)選但如果你手動(dòng)挪過文件很容易出現(xiàn)“找不到指定的模塊”這種玄學(xué)報(bào)錯(cuò)。2.2 運(yùn)行環(huán)境確認(rèn)別跳過這一步軟件說明里寫得很清楚Win10 x64、.NET Framework 4.6.2。我見過太多人直接雙擊 exe然后彈窗說“需要安裝 .NET Framework 4.6.2 或更高版本”。這不是軟件的問題是系統(tǒng)沒裝對(duì)應(yīng)運(yùn)行時(shí)。確認(rèn)方法很簡單打開注冊表看一條鍵值reg query HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full /v Release返回值如果大于等于394254說明 4.6.2 已安裝。小于這個(gè)數(shù)去微軟官網(wǎng)下離線安裝包裝完重啟再跑。注意Win10 1803 之后的版本通常自帶 4.7 以上但某些精簡版系統(tǒng)會(huì)砍掉所以這一步別省。另外HttpAutoResponseMessage.exe.config里綁定了 EntityFramework 的 provider。如果你機(jī)器上裝過多個(gè)版本的 SQLite可能會(huì)沖突。我一般會(huì)先把這個(gè) config 備份一份改壞了能回滾。3. 從零配一個(gè) Mock 接口界面操作與數(shù)據(jù)落庫3.1 啟動(dòng)服務(wù)與端口配置雙擊HttpAutoResponseMessage.exe主界面出來之后第一件事是確認(rèn)監(jiān)聽端口。默認(rèn)一般是 8080 或者工具自己選的空閑端口但如果你本機(jī) 8080 被占了比如 Tomcat、其他 Mock 服務(wù)就得改。操作路徑設(shè)置 → 服務(wù)配置 → 監(jiān)聽端口。改成一個(gè)你沒用過的比如18080。改完點(diǎn)“啟動(dòng)服務(wù)”狀態(tài)欄會(huì)顯示“運(yùn)行中”。這時(shí)候打開瀏覽器訪問http://127.0.0.1:18080如果返回一個(gè)默認(rèn)頁或者 404說明服務(wù)起來了。提示如果啟動(dòng)服務(wù)時(shí)報(bào)“拒絕訪問”大概率是端口被系統(tǒng)保留或者權(quán)限不夠。換 1024 以上的端口別用 80、443。3.2 新建接口并配置返回?cái)?shù)據(jù)點(diǎn)“新增接口”填幾個(gè)關(guān)鍵字段請求路徑比如/api/user/info注意前面帶斜杠請求方法GET / POST / PUT / DELETE按你前端實(shí)際調(diào)用的來返回狀態(tài)碼200 正常也可以配 500 測異常分支返回內(nèi)容類型application/json最常用返回體直接貼 JSON{ code: 0, message: success, data: { userId: 1001, userName: testUser, roles: [admin, editor] } }填完保存工具會(huì)把這條記錄寫進(jìn)DataServer.db。你可以立刻用 curl 驗(yàn)證curl -X GET http://127.0.0.1:18080/api/user/info返回的 JSON 和你填的一模一樣說明 Mock 生效了。這里有個(gè)參數(shù)要注意如果前端請求帶了 query 參數(shù)比如/api/user/info?id1001工具默認(rèn)是按路徑精確匹配的query 不影響匹配結(jié)果。但如果你配了兩條路徑相同、方法不同的接口它會(huì)按方法區(qū)分。3.3 數(shù)據(jù)持久化與日志排查所有接口配置都存在DataServer.db里這是個(gè) SQLite 文件。你可以用任何 SQLite 客戶端打開看表結(jié)構(gòu)不復(fù)雜但別手動(dòng)改容易把 EntityFramework 的映射搞亂。我一般只在遷移環(huán)境時(shí)直接拷這個(gè) db 文件。日志在Log/LogInfo和Log/LogError目錄下按日期分文件。如果某個(gè)請求沒返回預(yù)期數(shù)據(jù)先看 LogError 里有沒有異常堆棧。常見的是 JSON 格式錯(cuò)誤導(dǎo)致序列化失敗日志里會(huì)寫Newtonsoft.Json.JsonReaderException這時(shí)候回去檢查返回體是不是多了逗號(hào)或者少了引號(hào)。注意log4net.config里配了日志級(jí)別和滾動(dòng)策略默認(rèn)保留最近 7 天。如果你要長期跑記得改一下MaxSizeRollBackups不然磁盤會(huì)被日志吃滿。4. 避坑排查這五個(gè)問題我全踩過4.1 啟動(dòng)報(bào)“無法加載 SQLite.Interop.dll”現(xiàn)象雙擊 exe 后彈窗提示找不到SQLite.Interop.dll或者“無法加載 DLL”。原因x64 和 x86 目錄下的非托管 DLL 沒有被正確復(fù)制到輸出目錄或者你的進(jìn)程位數(shù)和 DLL 位數(shù)不匹配。解決確認(rèn)x64和x86兩個(gè)文件夾都在 exe 同級(jí)目錄下不要挪動(dòng)。如果還是報(bào)錯(cuò)把x64/SQLite.Interop.dll復(fù)制一份到 exe 根目錄試試。根本原因是 System.Data.SQLite 的加載邏輯會(huì)按進(jìn)程位數(shù)找對(duì)應(yīng)子目錄。4.2 接口配好了但請求返回 404現(xiàn)象curl 或?yàn)g覽器訪問配好的路徑返回 404 Not Found。原因路徑匹配是大小寫敏感的而且不支持通配符。你配了/api/User/Info請求/api/user/info就匹配不上。解決統(tǒng)一用全小寫路徑或者在前端代碼里保持大小寫一致。另外檢查請求方法是否匹配GET 配成了 POST 也會(huì) 404。4.3 返回中文亂碼現(xiàn)象返回的 JSON 里中文變成??????或者亂碼。原因返回內(nèi)容類型沒指定 charset或者工具默認(rèn)用了非 UTF-8 編碼。解決在返回內(nèi)容類型里顯式寫application/json; charsetutf-8。如果界面不支持填 charset就在返回體里避免直接用中文改用 Unicode 轉(zhuǎn)義前端拿到后再解碼。4.4 MQTT 功能報(bào)連接失敗現(xiàn)象用到 MQTT 推送的場景日志里報(bào)MQTTnet.Exceptions.MqttConnectingFailedException。原因工具內(nèi)置了 MQTTnet 庫但需要你配一個(gè)可用的 MQTT Broker 地址。默認(rèn)配置可能是空的或者指向了一個(gè)不存在的本地端口。解決如果你不需要 MQTT忽略這個(gè)報(bào)錯(cuò)不影響 HTTP Mock 主功能。如果需要在設(shè)置里填上你自己的 Broker 地址和端口比如tcp://127.0.0.1:1883。4.5 修改接口后前端拿到的還是舊數(shù)據(jù)現(xiàn)象在工具里改了返回體保存了但前端請求還是舊內(nèi)容。原因?yàn)g覽器或者 HTTP 客戶端緩存了之前的響應(yīng)。工具本身沒有加Cache-Control: no-cache頭。解決在返回頭里手動(dòng)加一條Cache-Control: no-cache, no-store?;蛘咔岸苏埱髸r(shí)加個(gè)隨機(jī)參數(shù)?ttimestamp繞過緩存。我一般直接在工具里配返回頭一勞永逸。5. 進(jìn)階技巧用返回頭模擬異常與多環(huán)境切換5.1 自定義返回頭實(shí)現(xiàn)異常場景Mock 不只是返回 200 和正常數(shù)據(jù)。真實(shí)聯(lián)調(diào)里你需要測 401 未登錄、403 無權(quán)限、500 服務(wù)端錯(cuò)誤。這個(gè)工具支持配返回狀態(tài)碼但更細(xì)的場景要靠返回頭。比如模擬 token 過期// 返回狀態(tài)碼配 401 // 返回頭配 { WWW-Authenticate: Bearer error\invalid_token\, Content-Type: application/json; charsetutf-8 } // 返回體 { code: 401, message: token expired }前端拿到 401 后應(yīng)該跳登錄頁。這樣你不用等后端真的把 token 邏輯寫完就能先把異常分支調(diào)通。5.2 多環(huán)境切換的笨辦法與巧辦法工具本身沒有“環(huán)境管理”功能但你可以用DataServer.db做文章。我一般會(huì)準(zhǔn)備三個(gè) db 文件DataServer_dev.db、DataServer_test.db、DataServer_stage.db分別對(duì)應(yīng)不同環(huán)境的接口數(shù)據(jù)。切換時(shí)關(guān)掉服務(wù)把對(duì)應(yīng)的 db 改名成DataServer.db再啟動(dòng)。# 切換環(huán)境示例Windows 批處理 copy /Y DataServer_dev.db DataServer.db start HttpAutoResponseMessage.exe這個(gè)辦法土但穩(wěn)。比在界面里一條條改接口快得多。注意改之前先停服務(wù)不然 SQLite 文件被占用復(fù)制會(huì)失敗。5.3 驗(yàn)證 Mock 是否真正生效別只看瀏覽器。用 curl 帶完整請求頭測curl -v -X POST http://127.0.0.1:18080/api/login \ -H Content-Type: application/json \ -d {username:admin,password:123456}看返回的 HTTP 狀態(tài)碼、響應(yīng)頭、響應(yīng)體三部分是否都符合預(yù)期。特別是Content-Type和Content-Length這兩個(gè)不對(duì)前端 axios 可能直接解析失敗。從那以后我每次配完 Mock 接口都強(qiáng)制走一遍 curl 驗(yàn)證確認(rèn)狀態(tài)碼、頭、體三樣都對(duì)再告訴前端“接口好了”。這個(gè)習(xí)慣幫我省了至少十次“我這邊好的啊你那邊是不是緩存了”的扯皮。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取