From 9d11619e48bb324986116100b16ad1503c32a5a2 Mon Sep 17 00:00:00 2001 From: tiglog Date: Wed, 20 Sep 2023 21:18:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=81=E8=A3=85=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E7=9A=84=20RequestGet=20and=20RequestPost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- helper/http_helper.go | 81 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/helper/http_helper.go b/helper/http_helper.go index 9b8d6aa..3c0889a 100644 --- a/helper/http_helper.go +++ b/helper/http_helper.go @@ -11,9 +11,90 @@ import ( "bytes" "encoding/json" "errors" + "io" "net/http" + "net/url" + "strings" ) +// vals := url.Values{} +// vals.Add("name","zhaofan") +// vals.Add("age","22") +func RequestPostForm(url string, vals url.Values) ([]byte, error) { + resp, err := http.PostForm(url, vals) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +func RequestPostJson(url string, data map[string]any) ([]byte, error) { + bd, err := json.Marshal(data) + if err != nil { + return nil, err + } + resp, err := http.Post(url, "application/json", bytes.NewReader(bd)) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +// 比较完整的 get 实现 +func RequestGet(url string, vals url.Values, headers map[string]string) ([]byte, error) { + req, err := http.NewRequest("GET", url, strings.NewReader(vals.Encode())) + if err != nil { + return nil, err + } + for hd, val := range headers { + req.Header.Set(hd, val) + } + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +// 默认是 json 请求 +func RequestPost(url string, vals url.Values, headers map[string]string) ([]byte, error) { + req, err := http.NewRequest("POST", url, strings.NewReader(vals.Encode())) + if err != nil { + return nil, err + } + if len(headers) == 0 { + headers["Content-Type"] = "application/json" + } + for hd, val := range headers { + req.Header.Set(hd, val) + } + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return nil, err + } + body, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +// 旧的方法,不建议使用 func RequestJson(url string, data []byte) (*http.Response, error) { res, err := http.Post(url, "application/json", bytes.NewBuffer(data)) if err != nil {