客戶端工程師:「xxx 接口壞了,個人程序都沒動過」,後端常常會收到這樣的質問,可是咱們如今如何重現這個問題?有如下幾種狀況:前端
1、後端測試了一下發現沒有問題git
「我這裏測試了是好的啊」,就只能讓客戶端工程師再操做一遍,親眼看到錯誤以後就確定是有問題了,就得去找問題,這時候這臺手機,以及這臺手機裏面的數據都很是重要,由於這些數據可讓 Bug 重現。github
2、測試了也有問題小程序
這時候後端就去修改程序了,可是每一次的測試是否有問題都須要在客戶端中操做,有時候的操做很是的複雜,在這上面花的時間會比較多。最後使了各類神通才終於找到問題,原來是這個用戶的某某數據有異常纔會出現這種狀況。後端
以上這種狀況家常便飯,最麻煩的點就在於,每次都要以出現 Bug 的相同參數去請求,有時候你知道這些請求的參數,能夠把它們放到 Postman 這種工具裏面,但大部分時候你並不知道它對應的參數 (token)服務器
若是咱們能夠在服務端跟蹤全部的請求:接口地址,Header,Body,後端返回的 Header、Body,這樣咱們就能查到對應的請求參數和返回值,能夠直接填到 Postman 裏面,要是還能一鍵從新請求就行了,由於咱們不想修改請求的參數,只是想再以相同的參數請求一遍,這樣咱們來調試對應的程序。curl
正好之前用過 ngrok,發現它有一個很是好的 debug 界面,能夠達到以上的要求,但如今不須要它的內網穿透功能,因而只能本身寫一個程序,只包含如下功能:工具
記錄接口全部的 Request 和 Response學習
能夠一鍵從新請求某個 Request測試
基本工做原理
HTTP 客戶端 Boast Web 服務器 | GET http://localhost:8080/ | 記錄請求並進行反向代理 | Response 200 OK | ---------------------------> | --------------------------> | ------┐ | | | | | | 記錄返回信息並轉發給客戶端 | <----┘ | <--------------------------- | <-------------------------- | ┌----------------------------------------------------------------------------┐ | url: http://localhost:8081 | | ---------------------------------------------------------------------------| | All Transactions ┌ - - - - - - - - - - - - - - - - - - - - - - - ┐ | | ---------------------- | time: 10 hours ago Client: 127.0.0.1 | | | |GET / 200 OK 100 ms | | | | | ---------------------- | Request [ Replay ] | | | | - - - - - - - - - - - - | | | | GET http://localhost/ HTTP/1.1 | | | | User-Agent: curl/7.51.0 | | | | Accept: */* | | | | | | | | Response | | | | - - - - - - - - - - - - | | | | HTTP/1.1 200 OK | | | | X-Server: HTTPLab | | | | Date: Thu, 02 Mar 2017 02:25:27 GMT | | | | Content-Length: 13 | | | | Content-Type: text/plain; charset=utf-8 | | | | | | | | Hello, World | | | └ - - - - - - - - - - - - - - - - - - - - - - - ┘ | | | └----------------------------------------------------------------------------┘
最近正在學習 Go,正好拿它來完成這個小程序,取名爲 Boast 爲了讓咱們在重現 Bug 上更爲主動和方便,以及更快地修復,好多花點時間來造輪子!
Go 和前端都是現學現賣,歡迎你們拍磚。