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) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了