ホームページ  >  記事  >  バックエンド開発  >  golangでリクエストを取得する

golangでリクエストを取得する

WBOY
WBOYオリジナル
2023-05-10 09:08:361054ブラウズ

Golang では、net/http パッケージの Get メソッドを使用して、サーバーに GET リクエストを送信し、リソースを取得できます。 GET リクエストは通常​​、ファイルのダウンロードやデータの取得など、既存のリソースを取得するために使用されます。

以下は、Golang を使用して GET リクエストを送信する方法を示す簡単な例です:

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    // 发送GET请求获取百度首页
    resp, err := http.Get("https://www.baidu.com")
    if err != nil {
        fmt.Println("请求错误", err)
        return
    }
    // 记得在函数结束时关闭响应体
    defer resp.Body.Close()

    // 读取响应体内容
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("读取响应体错误", err)
        return
    }

    // 将响应体内容打印出来
    fmt.Println(string(body))
}

コードでは、http.Get を使用して GET リクエストを送信します。最初のパラメータは取得するリソースのアドレスで、返される結果は、応答ヘッダー、応答ステータス、応答本文などの情報を含む Response オブジェクトです。要求されたアドレスが間違っている、ネットワーク接続がタイムアウトするなどのエラーが発生した場合、http.Get は空ではないエラー値 err を返します。

次に、ioutil.ReadAll メソッドを使用して、応答本文の内容を読み取り、出力します。応答オブジェクトの Body フィールドは、占有しているリソースを解放するためにプログラムの最後に閉じる必要があることに注意してください。

http.Get メソッドの使用に加えて、http.NewRequest メソッドを使用して Request オブジェクトを手動で構築することもできます。リクエスト ヘッダー、リクエスト パラメーター、その他の情報を設定し、http.DefaultClient.Do メソッドを使用してリクエストを送信します。コード例は次のとおりです。

package main

import (
    "fmt"
    "net/http"
    "net/url"
    "strings"
)

func main() {
    // 手动构造GET请求
    values := url.Values{}
    values.Add("key", "value")
    apiUrl := "http://api.example.com?" + values.Encode()
    req, err := http.NewRequest("GET", apiUrl, nil)
    if err != nil {
        fmt.Println("请求错误", err)
        return
    }

    // 设置请求头信息
    req.Header.Add("Accept-Encoding", "gzip, deflate, br")
    req.Header.Add("Connection", "keep-alive")
    req.Header.Add("Cookie", "user=abc; password=123")
    req.Header.Add("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8")
    req.Header.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3")

    // 发送请求
    client := http.DefaultClient
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println("请求错误", err)
        return
    }
    defer resp.Body.Close()

    // 读取响应体
    bodyBytes, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("读取响应体错误", err)
        return
    }
    bodyString := string(bodyBytes)
    fmt.Println(bodyString)
}

この例では、GET リクエストを手動で構築し、url.Values を使用してクエリ パラメータを設定し、http.NewRequet を使用します。 メソッドを使用して Request オブジェクトを作成し、リクエスト ヘッダー フィールドを通じてリクエスト ヘッダー情報を設定します。次に、リクエスト オブジェクトを http.DefaultClient に送信してリクエストし、ioutil.ReadAll メソッドを使用して応答本文の内容を読み取ります。

http.Get メソッドと http.NewRequest メソッドの使用に加えて、サードパーティ ライブラリ gorequest を使用して、 HTTP リクエストを構築して送信します。このライブラリは、リクエストヘッダー、リクエストパラメータ、JSON、ファイルアップロードなどを簡単に設定できる豊富なAPIを提供します。

以下は gorequest の簡単な使用例です:

package main

import (
    "fmt"
    "github.com/parnurzeal/gorequest"
)

func main() {
    // 使用gorequest构造GET请求
    resp, body, err := gorequest.New().Get("https://www.baidu.com").End()
    if err != nil {
        fmt.Println("请求错误", err)
        return
    }
    fmt.Println(body)
}

この例では、gorequest.New メソッドを使用して新しいオブジェクトを要求し、Get メソッドを使用して要求メソッドとアドレスを設定します。最後に、End メソッドはリクエストを送信し、応答結果を返します。 gorequest は、独自のニーズに応じてリクエストを柔軟に設定および送信するための便利なメソッドを多数提供します。

要約すると、Golang で GET リクエストを送信するのは非常に簡単です。 http.Get メソッド、http.NewRequest メソッド、またはサードパーティ ライブラリ gorequest を使用してリクエストを送信し、応答ステータスと応答本文を取得できます。応答オブジェクトのコンテンツ内。同時に、さまざまなシナリオのニーズを満たすために、リクエスト ヘッダー、リクエスト パラメーター、その他の情報を手動で設定することもできます。

以上がgolangでリクエストを取得するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。