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

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

原文連結: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 贊  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.