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

Go語(yǔ)言Http調(diào)用之Post請(qǐng)求詳解

 更新時(shí)間:2022年12月15日 09:24:16   作者:陳明勇  
前文我們介紹了如何進(jìn)行 HTTP 調(diào)用,并通過(guò) GET 請(qǐng)求的例子,講述了 query 參數(shù)和 header 參數(shù)如何設(shè)置,以及響應(yīng)體的獲取方法。 本文繼上文,接下來(lái)會(huì)通過(guò) POST 請(qǐng)求,對(duì)其他參數(shù)的設(shè)置進(jìn)行介紹,感興趣的可以了解一下

前言

上篇文章 Go HTTP 調(diào)用(上) 介紹了如何進(jìn)行 HTTP 調(diào)用,并通過(guò) GET 請(qǐng)求的例子,講述了 query 參數(shù)和 header 參數(shù)如何設(shè)置,以及響應(yīng)體的獲取方法。 本文繼上文,接下來(lái)會(huì)通過(guò) POST 請(qǐng)求,對(duì)其他參數(shù)的設(shè)置進(jìn)行介紹。

POST 請(qǐng)求

發(fā)起 HTTP POST 請(qǐng)求時(shí),攜帶 json 格式的 body 參數(shù)是最常見(jiàn)的,這是因?yàn)?json 格式的參數(shù)可讀性好,對(duì)于層級(jí)結(jié)構(gòu)較為復(fù)雜的數(shù)據(jù)也能應(yīng)對(duì),并且這符合 RestFul API 的規(guī)范。因此以下的示例為:發(fā)送 HTTP POST 請(qǐng)求,并攜帶 json 類(lèi)型的 body 參數(shù)。

import (
    "bytes"
    "context"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
)

type User struct {
    Username string `json:"username"`
    Password string `json:"password"`
}

func main() {
    client := http.Client{}

    user := User{
        Username: "123456",
        Password: "12346",
    }
    dataByte, err := json.Marshal(user)
    if err != nil {
        fmt.Println(err)
    }
    bodyReader := bytes.NewReader(dataByte)

    request, err := http.NewRequestWithContext(context.Background(), http.MethodPost, "http://localhost:8080/user", bodyReader)
    if err != nil {
        return
    }
    request.Header.Set("Content-Type", "application/json")
    resp, err := client.Do(request)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println("statusCode: ", resp.StatusCode)
    body, err := io.ReadAll(resp.Body)
    if err != nil {
        return
    }
    defer resp.Body.Close()
    fmt.Println(string(body))
}
  • 首先定義 User 結(jié)構(gòu)體,創(chuàng)建結(jié)構(gòu)體變量 user,通過(guò) json.Marshal 函數(shù),將 user 轉(zhuǎn)成 []byte 數(shù)據(jù),然后通過(guò) bytes.NewReader 函數(shù),將 []byte 數(shù)據(jù)轉(zhuǎn)成 Reader 指針變量。
  • http.NewRequestWithContext 函數(shù),最后一個(gè)參數(shù)是為 body 參數(shù),接收的變量類(lèi)型是 Reader 接口的實(shí)現(xiàn)體。第一步將 user 轉(zhuǎn)成 Reader 指針變量就是為了在這里進(jìn)行傳遞。
  • 傳遞 json 類(lèi)型的 body 參數(shù),需要在請(qǐng)求頭參數(shù)里設(shè)置 Content-Type 的值為 application/json。

如果是發(fā)送 application/x-www-form-urlencoded 類(lèi)型的表單數(shù)據(jù),需要改寫(xiě) body 參數(shù)的生成代碼:

values := url.Values{}
values.Set("username", "1234")
values.Set("password", "1234")
bodyReader := strings.NewReader(values.Encode())

小結(jié)

本文通過(guò) POST 請(qǐng)求,介紹了如何傳遞 json 類(lèi)型和 application/x-www-form-urlencoded 類(lèi)型的 body 參數(shù)。對(duì)于 HTTP 中的 query 參數(shù)和 body 參數(shù)的如何傳遞,上下兩篇文章已經(jīng)通過(guò)例子進(jìn)行介紹。雖然舉的例子是 GETPOST 請(qǐng)求,如果想要調(diào)用 PUT、DELETE 等請(qǐng)求,只需要在 NewRequestWithContext 函數(shù)中,指定第二個(gè)參數(shù)為 http.MethodPut、http.MethodDelete 等就行。

到此這篇關(guān)于Go語(yǔ)言Http調(diào)用之Post請(qǐng)求詳解的文章就介紹到這了,更多相關(guān)Go語(yǔ)言 Post請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go 如何基于IP限制HTTP訪問(wèn)頻率的方法實(shí)現(xiàn)

    Go 如何基于IP限制HTTP訪問(wèn)頻率的方法實(shí)現(xiàn)

    這篇文章主要介紹了Go 如何基于IP限制HTTP訪問(wèn)頻率的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • go數(shù)據(jù)結(jié)構(gòu)和算法BitMap原理及實(shí)現(xiàn)示例

    go數(shù)據(jù)結(jié)構(gòu)和算法BitMap原理及實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了go數(shù)據(jù)結(jié)構(gòu)和算法BitMap原理及實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 解讀unsafe.Pointer和uintptr的區(qū)別

    解讀unsafe.Pointer和uintptr的區(qū)別

    這篇文章主要介紹了解讀unsafe.Pointer和uintptr的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • golang結(jié)構(gòu)化日志slog的用法簡(jiǎn)介

    golang結(jié)構(gòu)化日志slog的用法簡(jiǎn)介

    日志是任何軟件的重要組成部分,Go?提供了一個(gè)內(nèi)置日志包(slog),在本文中,小編將簡(jiǎn)單介紹一下slog包的功能以及如何在?Go?應(yīng)用程序中使用它,感興趣的可以了解下
    2023-09-09
  • Go語(yǔ)言Zap庫(kù)Logger的定制化和封裝使用詳解

    Go語(yǔ)言Zap庫(kù)Logger的定制化和封裝使用詳解

    這篇文章主要介紹了Go語(yǔ)言Zap庫(kù)Logger的定制化和封裝使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • mac下golang安裝了windows編譯環(huán)境后編譯變慢

    mac下golang安裝了windows編譯環(huán)境后編譯變慢

    這篇文章主要介紹了mac下golang安裝了windows編譯環(huán)境后編譯變慢的處理方法,非常的簡(jiǎn)單,有相同問(wèn)題的小伙伴可以參考下。
    2015-04-04
  • Go語(yǔ)言常用字符串處理方法實(shí)例匯總

    Go語(yǔ)言常用字符串處理方法實(shí)例匯總

    這篇文章主要介紹了Go語(yǔ)言常用字符串處理方法,實(shí)例匯總了Go語(yǔ)言中常見(jiàn)的各種字符串處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • golang時(shí)間字符串和時(shí)間戳轉(zhuǎn)換的案例

    golang時(shí)間字符串和時(shí)間戳轉(zhuǎn)換的案例

    這篇文章主要介紹了golang時(shí)間字符串和時(shí)間戳轉(zhuǎn)換的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go語(yǔ)言官方依賴(lài)注入工具Wire的使用教程

    Go語(yǔ)言官方依賴(lài)注入工具Wire的使用教程

    依賴(lài)注入是一種實(shí)現(xiàn)控制反轉(zhuǎn)且用于解決依賴(lài)性問(wèn)題的設(shè)計(jì)模式。Golang?中常用的依賴(lài)注入工具主要有?Inject?、Dig?等。但是今天主要介紹的是?Go?團(tuán)隊(duì)開(kāi)發(fā)的?Wire,一個(gè)編譯期實(shí)現(xiàn)依賴(lài)注入的工具,感興趣的可以了解一下
    2022-09-09
  • go 類(lèi)型轉(zhuǎn)換方式(interface 類(lèi)型的轉(zhuǎn)換)

    go 類(lèi)型轉(zhuǎn)換方式(interface 類(lèi)型的轉(zhuǎn)換)

    這篇文章主要介紹了go 類(lèi)型轉(zhuǎn)換方式(interface 類(lèi)型的轉(zhuǎn)換),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05

最新評(píng)論