這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
原文連結:http://blog.phpor.me/note/2017/03/31/track-and-replay-http-request.html
用戶端工程師:“xxx 介面壞了,我的程式都沒動過”,後端經常會收到這樣的質問,但是我們現在如何重現這個問題?有以下幾種情況:
一、後端測試了一下發現沒有問題
“我這裡測試了是好的啊”,就只能讓用戶端工程師再操作一遍,親眼看到錯誤之後就肯定是有問題了,就得去找問題,這時候這台手機,以及這台手機裡面的資料都非常重要,因為這些資料可以讓 Bug 重現。
二、測試了也有問題
這時候後端就去修改程式了,但是每一次的測試是否有問題都需要在用戶端中操作,有時候的操作非常的複雜,在這上面花的時間會比較多。最後使了各種神通才終於找到問題,原來是這個使用者的某某資料有異常才會出現這種情況。
以上這種情況屢見不鮮,最麻煩的點就在於,每次都要以出現 Bug 的相同參數去請求,有時候你知道這些請求的參數,可以把它們放到 Postman 這種工具裡面,但大部分時候你並不知道它對應的參數 (token)
如果我們可以在服務端跟蹤所有的請求:介面地址,Header,Body,後端返回的 Header、Body,這樣我們就能查到對應的請求參數和傳回值,可以直接填到 Postman 裡面,要是還能一鍵重新請求就好了,因為我們不想修改請求的參數,只是想再以相同的參數請求一遍,這樣我們來調試對應的程式。
正好以前用過 ngrok,發現它有一個非常好的 debug 介面,可以達到以上的要求,但現在不需要它的內網穿透功能,於是只能自己寫一個程式,只包含以下功能:
* 記錄介面所有的 Request 和 Response
* 可以一鍵重新請求某個 Request
基本工作原理
HTTP 用戶端 Boast Web 服務器| GET http://localhost:8080/ | 記錄請求並進行反向 Proxy | 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 項目地址](https://github.com/dcb9/boast)
Go 和前端都是現學現賣,歡迎大家拍磚。
773 次點擊 ∙ 1 贊