Skip to content
This repository was archived by the owner on Jun 24, 2026. It is now read-only.

syhlion/greq

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

restful web service client

⚠️ 已封存(ARCHIVED)/不再維護

此專案為早期作品,現已封存,僅作為開發歷程的紀錄留存,請勿用於新專案。

當初的考量:自家服務需要一個「帶全域併發上限 + 慢請求(>2s)記錄」的輕量 REST client,於是在 requestwork.v2 之上封裝了 Get/Post/Put/Delete 便利方法與 httptrace 計時。

為什麼不成熟(不建議再用)

  • init() 會竄改全域 logrus 設定,污染任何 import 它的程式;
  • 無重試機制,且強制關閉 HTTP keep-alive(每次請求重建 TCP/TLS);
  • 內建 gzip 處理多為死碼、回應讀取無大小上限(OOM 風險)、resolveRequest/resolveRawRequest/ResolveTraceRequest 三份大量重複;
  • 與其依賴的 requestwork.v2(worker pool)屬畫蛇添足——限制併發用標準庫即可。

現在該用什麼:直接用 resty(社群最大)或 imroc/req(debug/trace 最強),兩者都內建 retry、trace、連線池,無需再自行封裝 HTTP 機制。

Go Report Card Build Status

restful web service reqeust tool

Requirements

Install

go get github.com/syhlion/greq

Usage

func main(){

    //need import https://github.com/syhlion/requestwork.v2
    worker:=requestwork.New(50)
    debug:=true

    client:=greq.New(worker,15*time.Second,debug)

    //GET
    data,httpstatus,err:=client.Get("https://tw.yahoo.com",nil)

    //POST
    v := url.Values{}
    v.Add("data", string(data))
    data,httpstatus,err:=client.Post("https://tw.yahoo.com",bytes.NewBufferString(v.Encode()))

}

About

go http request tool

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages