golang request body query 请求方式封装

创建一个 requests 目录,在requests目录下创建一个request.go文件,内容如下

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package requests
 
import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "io/ioutil"
    "net/http"
)
 
func checkError(err error) {
    if err != nil {
        fmt.Println(err)
    }
}
 
type Request struct {
    Url     *string
    Method  string
    Data    *map[string]string
    Headers *map[string]string
    RepInfo map[string]interface{}
}
 
func (r *Request) Body() {
    data, err := json.Marshal(r.Data)
    checkError(err)
    client := &http.Client{}
    req, err := http.NewRequest(r.Method, *r.Url, bytes.NewBuffer(data))
    checkError(err)
    req.Header.Add("Content-Type", "application/json;charset=UTF-8")
    for k, v := range *r.Headers {
        req.Header.Add(k, v)
    }
    rep, err := client.Do(req)
    checkError(err)
    defer func(Body io.ReadCloser) {
        err := Body.Close()
        checkError(err)
    }(rep.Body)
    body, err := ioutil.ReadAll(rep.Body)
    checkError(err)
    if err = json.Unmarshal(body, &r.RepInfo); err != nil {
        fmt.Println(err)
    }
}
 
func (r *Request) Query() {
    client := &http.Client{}
    req, err := http.NewRequest(r.Method, *r.Url, nil)
    checkError(err)
    req.Header.Add("Content-Type", "application/json;charset=UTF-8")
    for k, v := range *r.Headers {
        req.Header.Add(k, v)
    }
    query := req.URL.Query()
    for k, v := range *r.Data {
        query.Add(k, v)
    }
    req.URL.RawQuery = query.Encode()
    rep, err := client.Do(req)
    checkError(err)
    _ = rep.Body.Close()
    body, err := ioutil.ReadAll(rep.Body)
    checkError(err)
    err = json.Unmarshal(body, &r.RepInfo)
    checkError(err)
}

 

main.go 内容根据自己的真实的API接口进行测试,示例内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main
 
import (
    "requests"
    "fmt"
)
 
func main() {
    url := "http://xxxxxxxxx.com/v1/api"
    data := map[string]string{
        "name":    "zhangsan",
        "massage": "这是一个测试消息",
    }
    headers := map[string]string{"Authorization": "6c38874672f28b8a11"}
    request := requests.Request{Url: &url, Method: "POST", Data: &data, Headers: &headers}
    request.Body()
    fmt.Println(request.RepInfo)
}

 

  

 

posted @   昌慶  阅读(254)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示