最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

Get請(qǐng)求

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

以上即是Golang發(fā)送一個(gè)簡(jiǎn)單的Get請(qǐng)求。

Post請(qǐng)求

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{ //對(duì)客戶端進(jìn)行一些配置
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify: true,
		},
	}, Timeout: time.Duration(time.Second * 5)}
//此處是post請(qǐng)求的請(qǐng)求題,我們先初始化一個(gè)對(duì)象
	b := Body{
		xxx :xxx,
	}
//然后把結(jié)構(gòu)體對(duì)象序列化一下
	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) //把請(qǐng)求到的body轉(zhuǎn)化成byte[]
	if err != nil {
		return
	}
//初始化結(jié)構(gòu)體對(duì)象
	r := Response{}
//把請(qǐng)求到的結(jié)構(gòu)反序列化到專門接受返回值的對(duì)象上面
	err = json.Unmarshal(body, &r)
	if err != nil {
		return
	}
	// 此處舉行具體的邏輯判斷,然后返回即可
	return
}
//此處是發(fā)送Post請(qǐng)求的請(qǐng)求體(我們根據(jù)具體的接口文檔定義即可)
type Body struct {
	xxx   string `json:"xxx"`
}
//此處是請(qǐng)求的返回結(jié)果(我們根據(jù)具體的接口文檔定義即可)
type Response struct {
	Errcode int `json:"errcode"`
	Result Result `json:"result"`
}

總結(jié)

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

相關(guān)文章

  • 一文帶你了解Go語言實(shí)現(xiàn)的并發(fā)神庫(kù)conc

    一文帶你了解Go語言實(shí)現(xiàn)的并發(fā)神庫(kù)conc

    前幾天逛github發(fā)現(xiàn)了一個(gè)有趣的并發(fā)庫(kù)-conc,這篇文章將為大家詳細(xì)介紹一下這個(gè)庫(kù)的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-01-01
  • 一文詳解Go語言切片是如何擴(kuò)容的

    一文詳解Go語言切片是如何擴(kuò)容的

    切片是一個(gè)擁有相同類型元素的可變長(zhǎng)度的序列,它是基于數(shù)組類型做的一層封裝。它非常靈活,支持自動(dòng)擴(kuò)容。所以本文就來看看Go語言切片是如何擴(kuò)容的吧
    2023-04-04
  • 深入理解Go設(shè)計(jì)模式之代理模式

    深入理解Go設(shè)計(jì)模式之代理模式

    代理模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,?其中代理控制著對(duì)于原對(duì)象的訪問,?并允許在將請(qǐng)求提交給原對(duì)象的前后進(jìn)行一些處理,從而增強(qiáng)原對(duì)象的邏輯處理,這篇文章主要來學(xué)習(xí)一下代理模式的構(gòu)成和用法,需要的朋友可以參考下
    2023-05-05
  • 如何使用proto組件編譯pb.go文件

    如何使用proto組件編譯pb.go文件

    這篇文章主要介紹了如何使用proto組件編譯pb.go文件的詳細(xì)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 在Gin框架中正確刪除Cookie的操作指南

    在Gin框架中正確刪除Cookie的操作指南

    在現(xiàn)代Web開發(fā)中,Cookie管理是構(gòu)建用戶友好應(yīng)用的關(guān)鍵環(huán)節(jié),Gin作為Go語言中最受歡迎的Web框架之一,提供了簡(jiǎn)潔而強(qiáng)大的Cookie處理機(jī)制,本文將深入探討如何在Gin框架中正確刪除Cookie,需要的朋友可以參考下
    2025-08-08
  • Go語言Gin處理響應(yīng)方式詳解

    Go語言Gin處理響應(yīng)方式詳解

    gin框架封裝了常用的數(shù)據(jù)格式方法響應(yīng)于客戶端,下面這篇文章主要給大家介紹了關(guān)于Go語言Gin處理響應(yīng)方式的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Go語言Gin框架前后端分離項(xiàng)目開發(fā)實(shí)例

    Go語言Gin框架前后端分離項(xiàng)目開發(fā)實(shí)例

    本文主要介紹了Go語言Gin框架前后端分離項(xiàng)目開發(fā)工程化實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • 一文帶大家搞懂Go語言中的迭代器

    一文帶大家搞懂Go語言中的迭代器

    迭代器是使用戶可在容器對(duì)象上遍訪的對(duì)象,設(shè)計(jì)人員使用此接口無需關(guān)心容器對(duì)象的內(nèi)存分配的實(shí)現(xiàn)細(xì)節(jié),本文主要為大家詳細(xì)介紹一下Go語言中的迭代器的實(shí)現(xiàn),需要的可以了解下
    2025-02-02
  • Golang配置管理Viper的實(shí)現(xiàn)

    Golang配置管理Viper的實(shí)現(xiàn)

    Viper是Go語言配置管理庫(kù),支持JSON/YAML/TOML等多格式,可動(dòng)態(tài)監(jiān)聽配置變更,本文就來介紹一下Golang配置管理Viper的實(shí)現(xiàn),感興趣的可以了解一下
    2025-07-07
  • vscode中安裝Go插件和配置Go環(huán)境詳細(xì)步驟

    vscode中安裝Go插件和配置Go環(huán)境詳細(xì)步驟

    要在VSCode中配置Go語言插件,首先需要確保你的電腦已經(jīng)安裝了Go環(huán)境和最新版本的VSCode,這篇文章主要給大家介紹了關(guān)于vscode中安裝Go插件和配置Go環(huán)境的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

中西区| 宜川县| 樟树市| 中方县| 南城县| 饶阳县| 壶关县| 沈丘县| 凭祥市| 易门县| 怀宁县| 康定县| 搜索| 安福县| 两当县| 闽清县| 珠海市| 西吉县| 和田市| 北碚区| 沙坪坝区| 左云县| 泸溪县| 慈溪市| 绍兴县| 榆树市| 离岛区| 邵阳县| 永福县| 永川市| 晋宁县| 高要市| 绥德县| 晋中市| 柘城县| 淮安市| 滦南县| 和平县| 滨州市| 清镇市| 新乐市|