From d2ae9e258be093121d0a37f3c42f639e8a0c7b5a Mon Sep 17 00:00:00 2001 From: wangfuduo Date: Thu, 16 Apr 2026 15:45:21 +0800 Subject: [PATCH] refactor: reuse httpClient --- util/http.go | 77 ++++++++++++++++++++++------------------------------ 1 file changed, 33 insertions(+), 44 deletions(-) diff --git a/util/http.go b/util/http.go index 2b006b2..7194d7f 100644 --- a/util/http.go +++ b/util/http.go @@ -9,26 +9,36 @@ import ( "time" ) +var ( + httpClient *http.Client +) + +func init() { + httpClient = &http.Client{ + Timeout: 20 * time.Second, + Transport: &http.Transport{ + MaxIdleConns: 200, + MaxIdleConnsPerHost: 50, + MaxConnsPerHost: 500, + IdleConnTimeout: 90 * time.Second, + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + } +} + // PostJson 请求 func HttpPostJson(link string, header map[string]string, json []byte) ([]byte, error) { - client := &http.Client{Timeout: 20 * time.Second} - //忽略https的证书 - client.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - req, err := http.NewRequest("POST", link, bytes.NewBuffer(json)) if err != nil { return nil, err } - if header != nil { - for k, v := range header { - req.Header.Add(k, v) - } + + for k, v := range header { + req.Header.Add(k, v) } req.Header.Add("Content-Type", "application/json") - resp, err := client.Do(req) + resp, err := httpClient.Do(req) if err != nil { return nil, err } @@ -41,24 +51,17 @@ func HttpPostJson(link string, header map[string]string, json []byte) ([]byte, e // PostJson 请求 func HttpPutJson(link string, header map[string]string, json []byte) ([]byte, error) { - client := &http.Client{Timeout: 20 * time.Second} - //忽略https的证书 - client.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - req, err := http.NewRequest("PUT", link, bytes.NewBuffer(json)) if err != nil { return nil, err } - if header != nil { - for k, v := range header { - req.Header.Add(k, v) - } + + for k, v := range header { + req.Header.Add(k, v) } req.Header.Add("Content-Type", "application/json") - resp, err := client.Do(req) + resp, err := httpClient.Do(req) if err != nil { return nil, err } @@ -71,22 +74,15 @@ func HttpPutJson(link string, header map[string]string, json []byte) ([]byte, er // Get 请求 link:请求url func HttpGet(link string, header map[string]string) ([]byte, error) { - client := &http.Client{Timeout: 20 * time.Second} - //忽略https的证书 - client.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - req, err := http.NewRequest("GET", link, nil) if err != nil { return nil, err } - if header != nil { - for k, v := range header { - req.Header.Add(k, v) - } + + for k, v := range header { + req.Header.Add(k, v) } - resp, err := client.Do(req) + resp, err := httpClient.Do(req) if err != nil { return nil, err } @@ -99,22 +95,15 @@ func HttpGet(link string, header map[string]string) ([]byte, error) { // Get 请求 link:请求url func HttpDelete(link string, header map[string]string) ([]byte, error) { - client := &http.Client{Timeout: 20 * time.Second} - //忽略https的证书 - client.Transport = &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - } - req, err := http.NewRequest("DELETE", link, nil) if err != nil { return nil, err } - if header != nil { - for k, v := range header { - req.Header.Add(k, v) - } + + for k, v := range header { + req.Header.Add(k, v) } - resp, err := client.Do(req) + resp, err := httpClient.Do(req) if err != nil { return nil, err } -- 2.40.1