分享一個小工具 Boast:如何從服務端跟蹤全部 HTTP 請求,並方便回放?

客戶端工程師:「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 上更爲主動和方便,以及更快地修復,好多花點時間來造輪子!

Boast 項目地址

Go 和前端都是現學現賣,歡迎你們拍磚。

相關文章
相關標籤/搜索