Skip to content

Go对接三方API实践

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情

前言

本月会持续更新Go语言相关的文章,尤其是GoFrame,感兴趣的同学可以关注我,结伴而行。

同时会沉淀总结一下:《中台开发实践》、《私有化部署实践》、《深入理解goroutine及使用实践》、《如何在开发过程中把GO语言的价值体现出来》。

立志沉淀一些质量高的内容出来。

今天这篇分享:使用Go语言对接三方API实践。

知识点分析

  1. 网络请求
  2. 缓存
  3. 获得token
  4. 刷新token
  5. redis的使用

关键代码

定义结构体

关键点

  1. 能复用的一定要复用
  2. 能分层的一定要分层
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)) }