如何使用Golang发送Get和Post请求

2023-12-05 0 388
目录
  • 前言
  • Get请求
  • Post请求
  • 总结

前言

最近在研究钉钉机器人,发现钉钉的第三方接口有时需要用Get或者Post请求访问,虽然说可以通过Apifox直接模拟发送请求,但是我还是想研究一个如何使用Golang来发送Get和Post请求。

Get请求

package getUserid

import (
\”crypto/tls\”
\”encoding/json\”
\”io/ioutil\”
\”net/http\”
\”strings\”
\”time\”
)

type User struct { //我们发送get请求需要传递一个参数mobile,我们封装一个对应的结构体
Mobile string `json:\”mobile\”`
}
type UserResopnseFail struct { //这个是如果访问失败的话,把失败信息保存在结构体创建的对象中
Errcode int `json:\”errcode\”`
Errmsg string `json:\”errmsg\”`
Result struct {
Userid string `json:\”userid\”`
} `json:\”result\”`
RequestId string `json:\”request_id\”`
}
type UserResponseSucc struct {// //这个是如果访问成功的话,把成功信息保存在结构体创建的对象中
Errcode int `json:\”errcode\”`
Errmsg string `json:\”errmsg\”`
Result struct {
Userid string `json:\”userid\”`
} `json:\”result\”`
RequestId string `json:\”request_id\”`
}

func GetUserID(number,access_token string) (userid string,err error) {
var client *http.Client //封装客户端
var request *http.Request //封装请求
var resp *http.Response //封装响应
var body []byte
urlForUserID := \”https://oapi.dingtalk.com/topapi/v2/user/getbymobile?access_token=\” + access_token//拼接URL
client = &http.Client{Transport: &http.Transport{ //对客户端进行一些配置
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}, Timeout: time.Duration(time.Second * 5)}
u := User{
Mobile: number,
} //声明一个结构体对象,把我们传递的参数放进去
usermarshal, err := json.Marshal(&u) //把结构体序列化成byte[]类型
if err != nil {
return
}

reqBody := strings.NewReader(string(usermarshal))//此处再处理一步,才能放入下方请求中
request, err = http.NewRequest(http.MethodPost, urlForUserID, reqBody)
if err != nil {
return
}
resp, err = client.Do(request)//发送请求
if err != nil {
return
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body) //把请求到的body转化成byte[]
if err != nil {
return
}
dataSucc := UserResponseSucc{} //声明一个响应对象
err = json.Unmarshal(body, &dataSucc)//把resq.Body反序列化成一个结构体对象
if err != nil {
dateFail := UserResopnseFail{}
err = json.Unmarshal(body, &dateFail)
if err != nil {
return
}
}
return dataSucc.Result.Userid,err

return
}

以上即是Golang发送一个简单的Get请求。

Post请求

func Post(需要的参数) (需要返回的数据) {
var client *http.Client
var request *http.Request
var resp *http.Response
var body []byte
URL := \”xxx\”
client = &http.Client{Transport: &http.Transport{ //对客户端进行一些配置
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}, Timeout: time.Duration(time.Second * 5)}
//此处是post请求的请求题,我们先初始化一个对象
b := Body{
xxx :xxx,
}
//然后把结构体对象序列化一下
bodymarshal, err := json.Marshal(&b)
if err != nil {
return
}
//再处理一下
reqBody := strings.NewReader(string(bodymarshal))
//然后就可以放入具体的request中的
request, err = http.NewRequest(http.MethodPost, URL, reqBody)
if err != nil {
return
}
resp, err = client.Do(request)
if err != nil {
return
}
defer resp.Body.Close()
body, err = ioutil.ReadAll(resp.Body) //把请求到的body转化成byte[]
if err != nil {
return
}
//初始化结构体对象
r := Response{}
//把请求到的结构反序列化到专门接受返回值的对象上面
err = json.Unmarshal(body, &r)
if err != nil {
return
}
// 此处举行具体的逻辑判断,然后返回即可
return
}
//此处是发送Post请求的请求体(我们根据具体的接口文档定义即可)
type Body struct {
xxx string `json:\”xxx\”`
}
//此处是请求的返回结果(我们根据具体的接口文档定义即可)
type Response struct {
Errcode int `json:\”errcode\”`
Result Result `json:\”result\”`
}

总结

到此这篇关于如何使用Golang发送Get和Post请求的文章就介绍到这了,更多相关Golang发送Get和Post请求内容请搜索悠久资源网以前的文章或继续浏览下面的相关文章希望大家以后多多支持悠久资源网!

您可能感兴趣的文章:

  • Go语言服务器开发实现最简单HTTP的GET与POST接口
  • Go语言中利用http发起Get和Post请求的方法示例
  • Go语言Web编程实现Get和Post请求发送与解析的方法详解
  • Go语言开发发送Get和Post请求的示例
  • 详解Go语言中Get/Post请求测试

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悠久资源 Golang 如何使用Golang发送Get和Post请求 https://www.u-9.cn/jiaoben/golang/102017.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务