中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

go requests的工作過程是什么

發布時間:2021-10-12 13:48:08 來源:億速云 閱讀:122 作者:iii 欄目:編程語言

本篇內容主要講解“go requests的工作過程是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“go requests的工作過程是什么”吧!

github.com/asmcos/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的工作過程是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景洪市| 池州市| 灯塔市| 诸城市| 灵山县| 寻乌县| 台北市| 宁乡县| 咸阳市| 龙井市| 景泰县| 临沭县| 兴宁市| 冷水江市| 乃东县| 吐鲁番市| 浦东新区| 屏南县| 长葛市| 安福县| 如东县| 开鲁县| 海兴县| 合阳县| 周至县| 蓬莱市| 东乌| 罗江县| 政和县| 高清| 钟山县| 井陉县| 茶陵县| 木里| 穆棱市| 清水县| 庄河市| 寿光市| 葵青区| 凌源市| 灌云县|