千家信息网

go requests的工作过程是什么

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容主要讲解"go requests的工作过程是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"go requests的工作过程是什么"吧!gith
千家信息网最后更新 2025年02月06日go requests的工作过程是什么

本篇内容主要讲解"go requests的工作过程是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"go requests的工作过程是什么"吧!

github.com/asmcos/requests

  • 最开始尝试用map[string]string或map[string]interface{}接受数据,发现接受之后取复杂对象类型中的数据比较麻烦,就想到了先看接口返回数据的具体格式,构造下结构体去接收;

  • 由于给的接口文档并没有将请求token和请求数据两个接口的正确和错误字段[类型给出],所以改结构体的字段类型多试了几遍、但是请求接口错误信息没法模拟,就根据写python时候的经验加了能记起来的Result参数;

  • 请求接口正确和错误情况下包含的字段完全不同,但是这边都构造在了接受的结构体对象中,不知道这么处理正确么

package hrimport (        "gitee.com/RandolphCYG/akita/pkg/log"        "github.com/asmcos/requests")// HrToken 获取token接口返回数据结构体type HrToken struct {        // 正确时候        AccessToken string `json:"access_token"`        ExpiresIn   int    `json:"expires_in"`        Scope       string `json:"scope"`        TokenType   string `json:"token_type"`        // 错误时候        Code             int    `json:"code"`        Error            string `json:"error"`        ErrorDescription string `json:"error_description"`        Message          string `json:"message"`        Success          bool   `json:"success"`}// HrData HR数据接口返回数据结构体type HrData struct {        Content          []HrUser `json:"content"`        Empty            bool     `json:"empty"`        Number           int      `json:"number"`        NumberOfElements int      `json:"numberOfElements"`        Size             int      `json:"size"`        TotalElements    int      `json:"totalElements"`        TotalPages       int      `json:"totalPages"`        // 出错时候        Result string `json:"result"`}// HrUser 数据接口查询的用户信息结构体type HrUser struct {        CompanyCode string `json:"company_code"`        CompanyName string `json:"company_name"`        Name        string `json:"ename"`        Department  string `json:"org_all"`        Eid         string `json:"pernr"`        Stat        string `json:"stat2"`        Mobile      string `json:"usrid"`        Mail        string `json:"usrid_long"`        Title       string `json:"zmplans"`}// HrDataConn HR数据模型type HrDataConn struct {        // 获取 token 的 URL        UrlGetToken string `json:"url_get_token" gorm:"type:varchar(255);not null;comment:获取token的地址"`        // 获取 数据 的URL        UrlGetData string `json:"url_get_data" gorm:"type:varchar(255);not null;comment:获取数据的地址"`}// FetchToken 获取tokenfunc FetchToken(h *HrDataConn) (token HrToken) {        req := requests.Requests()        respFetchToken, err := req.Post(h.UrlGetToken)        if err != nil {                // 抛错                log.Log().Error("fetch token failed,err:%v\n", err)                return        }        // 反序列化        err = respFetchToken.Json(&token)        if err != nil {                // 抛错                log.Log().Error("convert response to json failed,err:%v\n", err)                return        }        if !token.Success {                // 抛错                log.Log().Error(token.ErrorDescription)                return        }        return}// FetchHrData 带着token去获取HR数据func FetchHrData(h *HrDataConn) (hrUsers []HrUser) {        req := requests.Requests()        hrToken := FetchToken(h)        header := requests.Header{                "Authorization": hrToken.TokenType + " " + hrToken.AccessToken,                "Content-Type":  "application/json;charset=UTF-8",        }        // 发送请求        respFetchData, err := req.Post(h.UrlGetData, header)        if err != nil {                log.Log().Error("fetch hr data failed,err:%v\n", err)                return        }        var hrdata HrData        respFetchData.Json(&hrdata)        // 返回数据是否有报错字段        if hrdata.Result != "" {                log.Log().Error("fetch hr data failed,err%v\n", hrdata.Result)                return        }        hrUsers = hrdata.Content        return}

到此,相信大家对"go requests的工作过程是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0