您好,登錄后才能下訂單哦!
本篇內容主要講解“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的工作過程是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。