golangがリクエストを送信する

王林
リリース: 2023-05-21 22:08:07
オリジナル
1261 人が閲覧しました

Go は、効率的で信頼性の高い同時実行ネットワーク アプリケーションの作成に非常に適したオープン ソース プログラミング言語です。 Go は、その優れたパフォーマンスと書きやすさにより、多くのアプリケーションで選ばれるプログラミング言語となっています。この記事では、Go を使用して HTTP リクエストを送信する方法について説明します。

  1. 最初に net/http パッケージを導入する

Go で HTTP リクエストを送信するための最初のステップは、net/http パッケージを導入することです。 HTTP クライアントやサーバーの作成など、多くの機能を提供します。

import "net/http"

  1. HTTP クライアントの作成

HTTP クライアントを作成するには、http.Client 構造を使用する必要があります。以下を使用して作成できます:

client := &http.Client{}

クライアントには、変更できるオプションも多数あります。たとえば、タイムアウトを設定したり、プロキシ サーバーを使用したりできます。以下にタイムアウトとプロキシ サーバーを使用した例を示します。

timeout := time.Duration(5 * time.Second)
transport := &http.Transport{

Proxy: http.ProxyURL(proxyUrl),
ログイン後にコピー

}
client := &http.Client{

Timeout:   timeout,
Transport: transport,
ログイン後にコピー

}

プロキシ サーバーはオプションであることに注意してください。プロキシ サーバーを使用する必要がない場合は、空のプロキシ URL を直接使用できます:

proxyUrl, err := url.Parse("")

  1. Send HTTP GET request

HTTP クライアントを作成したので、リクエストの送信を開始できます。最も単純なリクエストは HTTP GET リクエストです。Get 関数を使用して GET リクエストを送信します。

応答、エラー := client.Get("https://www.example.com/path/to/resource")

func main() {

resp, err := http.Get("https://www.example.com/path/to/resource")
if err != nil {
        // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
        // handle error
}
fmt.Println(string(body))
ログイン後にコピー

}

リクエストが成功すると、サーバーは応答を返します。レスポンスのステータスコードやレスポンスボディなどの内容をレスポンスから読み取ることができます。注: 応答本文を読み取って応答本文のリソースを解放した後、 resp.Body.Close() メソッドを呼び出す必要があります。

  1. HTTP POST リクエストの送信

GET リクエストに加えて、HTTP POST リクエストも送信できます。 POST リクエストは通常​​、データをサーバーに送信するために使用されます。 Post 関数を使用して、次のように POST リクエストを作成できます:

values := map[string]string{"username": "Administrator", "password": "Password"}
jsonValue , _ := json.Marshal(values)
url := "http://example.com/login"
req, err := http.NewRequest("POST", url, bytes.NewBuffer( jsonValue ))
req.Header.Set("Content-Type", "application/json")

func main() {

values := map[string]string{"username": "管理员", "password": "密码"}
jsonValue, _ := json.Marshal(values)
resp, err := http.Post("http://example.com/login", "application/json", bytes.NewBuffer(jsonValue))
if err != nil {
        // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
        // handle error
}
fmt.Println(string(body))
ログイン後にコピー

}

上記コードでは、NewRequest 関数を使用して POST リクエストを作成します。リクエストの本文を bytes.NewBuffer 関数に渡します。ここで、本文は JSON 形式を使用してエンコードされます。次に、Content-Type ヘッダーを「application/json」に設定して、サーバーがリクエストの本文が JSON 形式であることを認識できるようにします。

  1. 他のタイプの HTTP リクエストの送信

Go では、PUT、DELETE、PATCH、OPTIONS、HEAD などの他のタイプの HTTP リクエストを送信できます。これらのリクエストを送信するには、http.NewRequest 関数を使用できます。 PUT リクエストを使用して JSON ファイルを送信する例を次に示します。

values := map[string]string{"name": "John Doe", "age": "29"}
jsonValue, _ := json.Marshal(values)
req, err := http.NewRequest("PUT", "http://example.com/users/123", bytes.NewBuffer(jsonValue))
req.Header.Set("Content-Type", "application/json")

func main() {

values := map[string]string{"name": "John Doe", "age": "29"}
jsonValue, _ := json.Marshal(values)
req, err := http.NewRequest("PUT", "http://example.com/users/123", bytes.NewBuffer(jsonValue))
if err != nil {
        // handle error
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
        // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
        // handle error
}
fmt.Println(string(body))
ログイン後にコピー

}

DELETE、PATCH を送信するには、OPTIONS および HEAD リクエストの場合は、http.NewRequest 関数の最初のパラメータを関連する HTTP メソッドに変更するだけです。たとえば、DELETE リクエストを送信するには、最初のパラメータを「DELETE」に変更します。

  1. 結論

この記事では、Go を使用して HTTP リクエストを送信する方法を紹介しました。 HTTP クライアントを作成し、HTTP GET リクエストと POST リクエストをサーバーに送信しました。 PUT、DELETE、PATCH、OPTIONS、HEAD など、他のタイプの HTTP リクエストを送信する方法についても説明しました。

実際の開発では、通常、さらに多くのオプションや機能が必要になります。これは、http.Client 構造のさまざまなプロパティを設定することで実現できます。これらのメソッドを使用すると、Go で HTTP リクエストを簡単に送信し、応答を処理できます。 Web アプリケーション、分散システム、バックエンド サービス、その他のネットワーク アプリケーションを構築する場合でも、Go を使用すると簡単に作業を完了できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート