重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“go requests的工作过程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“go requests的工作过程是什么”吧!
创新互联公司是一家集网站建设,万秀企业网站建设,万秀品牌网站建设,网站定制,万秀网站建设报价,网络营销,网络优化,万秀网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
最开始尝试用map[string]string或map[string]interface{}接受数据,发现接受之后取复杂对象类型中的数据比较麻烦,就想到了先看接口返回数据的具体格式,构造下结构体去接收;
由于给的接口文档并没有将请求token和请求数据两个接口的正确和错误字段[类型给出],所以改结构体的字段类型多试了几遍、但是请求接口错误信息没法模拟,就根据写python时候的经验加了能记起来的Result参数;
请求接口正确和错误情况下包含的字段完全不同,但是这边都构造在了接受的结构体对象中,不知道这么处理正确么
package hr import ( "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 获取token func 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的工作过程是什么”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!