Go は、効率的で信頼性の高い同時実行ネットワーク アプリケーションの作成に非常に適したオープン ソース プログラミング言語です。 Go は、その優れたパフォーマンスと書きやすさにより、多くのアプリケーションで選ばれるプログラミング言語となっています。この記事では、Go を使用して HTTP リクエストを送信する方法について説明します。
Go で HTTP リクエストを送信するための最初のステップは、net/http パッケージを導入することです。 HTTP クライアントやサーバーの作成など、多くの機能を提供します。
import "net/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("")
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() メソッドを呼び出す必要があります。
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 形式であることを認識できるようにします。
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」に変更します。
この記事では、Go を使用して HTTP リクエストを送信する方法を紹介しました。 HTTP クライアントを作成し、HTTP GET リクエストと POST リクエストをサーバーに送信しました。 PUT、DELETE、PATCH、OPTIONS、HEAD など、他のタイプの HTTP リクエストを送信する方法についても説明しました。
実際の開発では、通常、さらに多くのオプションや機能が必要になります。これは、http.Client 構造のさまざまなプロパティを設定することで実現できます。これらのメソッドを使用すると、Go で HTTP リクエストを簡単に送信し、応答を処理できます。 Web アプリケーション、分散システム、バックエンド サービス、その他のネットワーク アプリケーションを構築する場合でも、Go を使用すると簡単に作業を完了できます。
以上がgolangがリクエストを送信するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。