Go对接三方API实践
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情。
前言
本月会持续更新Go语言相关的文章,尤其是GoFrame,感兴趣的同学可以关注我,结伴而行。
同时会沉淀总结一下:《中台开发实践》、《私有化部署实践》、《深入理解goroutine及使用实践》、《如何在开发过程中把GO语言的价值体现出来》。
立志沉淀一些质量高的内容出来。
今天这篇分享:使用Go语言对接三方API实践。
知识点分析
- 网络请求
- 缓存
- 获得token
- 刷新token
- redis的使用
关键代码
定义结构体
关键点
- 能复用的一定要复用
- 能分层的一定要分层
go
```type Config struct { ApiUrl string AppKey string AppSecret string Version string } type Client struct { *Config AccessToken string RefreshToken string } type CommonReq struct { AppKey string `json:"app_key"` Version string `json:"version"` Method string `json:"method"` AccessToken string `json:"access_token"` Timestamp string `json:"timestamp"` Param interface{} `json:"param"` Sign string `json:"sign,omitempty"` } type CommonPageReq struct { PageNo int `json:"pageNo"` PageSize int `json:"pageSize"` } type CommonPageRes struct { PageSize int `json:"pageSize"` PageNo int `json:"pageNo"` TotalPage int `json:"totalPage"` TotalCount int `json:"totalCount"` } type CommonRes struct { Code string `json:"code"` Message string `json:"message"` SubCode string `json:"sub_code"` SubMsg string `json:"sub_msg"` }``
## 签名相关
1. 根据三方要求进行签名(验签)
2. 比如我这里示例的:md5加密
``` go
func (s *Client) sign(req g.Map) string { data := gjson.New(req) _ = data.Remove("sign") return gstr.ToUpper(gmd5.MustEncryptString(server.AppSecret + data.MustToJsonString() + server.AppSecret)) }