Go 语言教程我看了个大概,想写一个监控网站的小程序,代码如下。
package main
import (
"fmt"
"github.com/go-resty/resty/v2"
)
func main() {
// Create a Resty Client
client := resty.New()
resp, err := client.R().
EnableTrace().
Get("https://www.baidu.com")
// Explore response object
fmt.Println("Response Info:")
fmt.Println(" Error :", err)
fmt.Println(" Status Code:", resp.StatusCode())
fmt.Println(" Status :", resp.Status())
fmt.Println(" Proto :", resp.Proto())
fmt.Println(" Time :", resp.Time())
fmt.Println(" Received At:", resp.ReceivedAt())
fmt.Println(" Body :\n", resp)
fmt.Println()
// Explore trace info
fmt.Println("Request Trace Info:")
ti := resp.Request.TraceInfo()
fmt.Println(" DNSLookup :", ti.DNSLookup)
fmt.Println(" ConnTime :", ti.ConnTime)
fmt.Println(" TCPConnTime :", ti.TCPConnTime)
fmt.Println(" TLSHandshake :", ti.TLSHandshake)
fmt.Println(" ServerTime :", ti.ServerTime)
fmt.Println(" ResponseTime :", ti.ResponseTime)
fmt.Println(" TotalTime :", ti.TotalTime)
fmt.Println(" IsConnReused :", ti.IsConnReused)
fmt.Println(" IsConnWasIdle :", ti.IsConnWasIdle)
fmt.Println(" ConnIdleTime :", ti.ConnIdleTime)
fmt.Println(" RequestAttempt:", ti.RequestAttempt)
fmt.Println(" RemoteAddr :", ti.RemoteAddr.String())
}
但是我发现,去请求大文件的时候,程序响应很慢,而我只需要返回成功的状态码就行了。
研究了一下,发现可以设置 Header
的 Range
为 "bytes=0-1023"
,限制请求数据大小。因为我只关心状态码而不关心 body 内容
MDN - https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Range
改了一下,代码如下
resp, err := client.R().
EnableTrace().
SetHeader("Range", "bytes=0-1023").
Get("https://www.baidu.com")