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

Go語言Http調用之Post請求詳解

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

前言

上篇文章 Go HTTP 調用(上) 介紹了如何進行 HTTP 調用,并通過 GET 請求的例子,講述了 query 參數(shù)和 header 參數(shù)如何設置,以及響應體的獲取方法。 本文繼上文,接下來會通過 POST 請求,對其他參數(shù)的設置進行介紹。

POST 請求

發(fā)起 HTTP POST 請求時,攜帶 json 格式的 body 參數(shù)是最常見的,這是因為 json 格式的參數(shù)可讀性好,對于層級結構較為復雜的數(shù)據(jù)也能應對,并且這符合 RestFul API 的規(guī)范。因此以下的示例為:發(fā)送 HTTP POST 請求,并攜帶 json 類型的 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 結構體,創(chuàng)建結構體變量 user,通過 json.Marshal 函數(shù),將 user 轉成 []byte 數(shù)據(jù),然后通過 bytes.NewReader 函數(shù),將 []byte 數(shù)據(jù)轉成 Reader 指針變量。
  • http.NewRequestWithContext 函數(shù),最后一個參數(shù)是為 body 參數(shù),接收的變量類型是 Reader 接口的實現(xiàn)體。第一步將 user 轉成 Reader 指針變量就是為了在這里進行傳遞。
  • 傳遞 json 類型的 body 參數(shù),需要在請求頭參數(shù)里設置 Content-Type 的值為 application/json。

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

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

小結

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

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

相關文章

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

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

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

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

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

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

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

    golang結構化日志slog的用法簡介

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

    Go語言Zap庫Logger的定制化和封裝使用詳解

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

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

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

    Go語言常用字符串處理方法實例匯總

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

    golang時間字符串和時間戳轉換的案例

    這篇文章主要介紹了golang時間字符串和時間戳轉換的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言官方依賴注入工具Wire的使用教程

    Go語言官方依賴注入工具Wire的使用教程

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

    go 類型轉換方式(interface 類型的轉換)

    這篇文章主要介紹了go 類型轉換方式(interface 類型的轉換),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評論