欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何使用Golang發(fā)送Get和Post請求

 更新時間:2023年06月30日 15:50:13   作者:大杯無糖  
這篇文章主要給大家介紹了關(guān)于如何使用Golang發(fā)送Get和Post請求的相關(guān)資料,Go語言(Golang)的標準庫提供了處理HTTP請求的功能,這使得將Go用于web應(yīng)用程序變得非常容易,需要的朋友可以參考下

前言

最近在研究釘釘機器人,發(fā)現(xiàn)釘釘?shù)牡谌浇涌谟袝r需要用Get或者Post請求訪問,雖然說可以通過Apifox直接模擬發(fā)送請求,但是我還是想研究一個如何使用Golang來發(fā)送Get和Post請求。

Get請求

package getUserid
 
import (
	"crypto/tls"
	"encoding/json"
	"io/ioutil"
	"net/http"
	"strings"
	"time"
)
 
type User struct { //我們發(fā)送get請求需要傳遞一個參數(shù)mobile,我們封裝一個對應(yīng)的結(jié)構(gòu)體
	Mobile string `json:"mobile"`
}
type UserResopnseFail struct { //這個是如果訪問失敗的話,把失敗信息保存在結(jié)構(gòu)體創(chuàng)建的對象中
	Errcode int    `json:"errcode"`
	Errmsg  string `json:"errmsg"`
	Result  struct {
		Userid string `json:"userid"`
	} `json:"result"`
	RequestId string `json:"request_id"`
}
type UserResponseSucc struct {// //這個是如果訪問成功的話,把成功信息保存在結(jié)構(gòu)體創(chuàng)建的對象中
	Errcode int    `json:"errcode"`
	Errmsg  string `json:"errmsg"`
	Result  struct {
		Userid string `json:"userid"`
	} `json:"result"`
	RequestId string `json:"request_id"`
}
 
func GetUserID(number,access_token string) (userid string,err error) {
	var client *http.Client //封裝客戶端
	var request *http.Request //封裝請求
	var resp *http.Response //封裝響應(yīng)
	var body []byte
	urlForUserID := "https://oapi.dingtalk.com/topapi/v2/user/getbymobile?access_token=" + access_token//拼接URL
	client = &http.Client{Transport: &http.Transport{ //對客戶端進行一些配置
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: true,
		},
	}, Timeout: time.Duration(time.Second * 5)}
	u := User{
		Mobile: number,
	} //聲明一個結(jié)構(gòu)體對象,把我們傳遞的參數(shù)放進去
	usermarshal, err := json.Marshal(&u) //把結(jié)構(gòu)體序列化成byte[]類型
	if err != nil {
		return
	}
	
	reqBody := strings.NewReader(string(usermarshal))//此處再處理一步,才能放入下方請求中
	request, err = http.NewRequest(http.MethodPost, urlForUserID, reqBody)
	if err != nil {
		return
	}
	resp, err = client.Do(request)//發(fā)送請求
	if err != nil {
		return
	}
	defer resp.Body.Close()
	body, err = ioutil.ReadAll(resp.Body) //把請求到的body轉(zhuǎn)化成byte[]
	if err != nil {
		return
	}
	dataSucc := UserResponseSucc{} //聲明一個響應(yīng)對象
	err = json.Unmarshal(body, &dataSucc)//把resq.Body反序列化成一個結(jié)構(gòu)體對象
	if err != nil {
		dateFail := UserResopnseFail{}
		err = json.Unmarshal(body, &dateFail)
		if err != nil {
			return
		}
	}
	return dataSucc.Result.Userid,err
 
	return
}

以上即是Golang發(fā)送一個簡單的Get請求。

Post請求

func Post(需要的參數(shù)) (需要返回的數(shù)據(jù)) {
	var client *http.Client
	var request *http.Request
	var resp *http.Response
	var body []byte
	URL := "xxx" 
	client = &http.Client{Transport: &http.Transport{ //對客戶端進行一些配置
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: true,
		},
	}, Timeout: time.Duration(time.Second * 5)}
//此處是post請求的請求題,我們先初始化一個對象
	b := Body{
		xxx :xxx,
	}
//然后把結(jié)構(gòu)體對象序列化一下
	bodymarshal, err := json.Marshal(&b)
	if err != nil {
		return
	}
//再處理一下
	reqBody := strings.NewReader(string(bodymarshal))
//然后就可以放入具體的request中的
	request, err = http.NewRequest(http.MethodPost, URL, reqBody)
	if err != nil {
		return
	}
	resp, err = client.Do(request)
	if err != nil {
		return
	}
	defer resp.Body.Close()
	body, err = ioutil.ReadAll(resp.Body) //把請求到的body轉(zhuǎn)化成byte[]
	if err != nil {
		return
	}
//初始化結(jié)構(gòu)體對象
	r := Response{}
//把請求到的結(jié)構(gòu)反序列化到專門接受返回值的對象上面
	err = json.Unmarshal(body, &r)
	if err != nil {
		return
	}
	// 此處舉行具體的邏輯判斷,然后返回即可
	return
}
//此處是發(fā)送Post請求的請求體(我們根據(jù)具體的接口文檔定義即可)
type Body struct {
	xxx   string `json:"xxx"`
}
//此處是請求的返回結(jié)果(我們根據(jù)具體的接口文檔定義即可)
type Response struct {
	Errcode int `json:"errcode"`
	Result Result `json:"result"`
}

總結(jié)

到此這篇關(guān)于如何使用Golang發(fā)送Get和Post請求的文章就介紹到這了,更多相關(guān)Golang發(fā)送Get和Post請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Golang標準庫flag的全面講解

    關(guān)于Golang標準庫flag的全面講解

    這篇文章主要介紹了關(guān)于Golang標準庫flag的全面講解,這個庫的代碼量只有1000行左右,卻提供了非常完善的命令行參數(shù)解析功能,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-09-09
  • Go語言在Linux環(huán)境下輸出彩色字符的方法

    Go語言在Linux環(huán)境下輸出彩色字符的方法

    這篇文章主要介紹了Go語言在Linux環(huán)境下輸出彩色字符的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • Go語言輸出函數(shù)使用詳解

    Go語言輸出函數(shù)使用詳解

    這篇文章主要介紹了Go語言輸出函數(shù)使用詳解的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • golang進程在docker中OOM后hang住問題解析

    golang進程在docker中OOM后hang住問題解析

    這篇文章主要介紹了golang進程在docker中OOM后hang住問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Go語言基礎(chǔ)學習之map的示例詳解

    Go語言基礎(chǔ)學習之map的示例詳解

    哈希表是常見的數(shù)據(jù)結(jié)構(gòu),有的語言會將哈希稱作字典或者映射,在Go中,哈希就是常見的數(shù)據(jù)類型map,本文就來聊聊Golang中map的相關(guān)知識吧
    2023-04-04
  • 使用Go實現(xiàn)在命令行輸出好看的表格

    使用Go實現(xiàn)在命令行輸出好看的表格

    這篇文章主要介紹了使用Go實現(xiàn)在命令行輸出好看的表格方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • goLang引入自定義包的方法

    goLang引入自定義包的方法

    今天小編就為大家分享一篇goLang引入自定義包的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 談?wù)凣o語言的反射三定律

    談?wù)凣o語言的反射三定律

    本文中,我們將解釋Go語言中反射的運作機制。每個編程語言的反射模型不大相同,很多語言索性就不支持反射(C、C++)。由于本文是介紹Go語言的,所以當我們談到“反射”時,默認為是Go語言中的反射。
    2016-08-08
  • Go Excelize API源碼解讀GetSheetViewOptions與SetPageLayout

    Go Excelize API源碼解讀GetSheetViewOptions與SetPageLayo

    這篇文章主要為大家介紹了Go Excelize API源碼解讀GetSheetViewOptions與SetPageLayout方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 詳解go語言單鏈表及其常用方法的實現(xiàn)

    詳解go語言單鏈表及其常用方法的實現(xiàn)

    這篇文章主要介紹了詳解go語言單鏈表及其常用方法的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論