検索
ホームページバックエンド開発Golanggolangがリクエストを送信する

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 サイトの他の関連記事を参照してください。

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

GoroutinesAreSareSareSareSormethodSthaturncurlyntingo、Enableing and LightweightConcurrency.1)theyRuntimeSimeSingMultiplexing、SountyStorunonFeweroSthReads.2)ゴルチンズを失ったことを許可します

go:目的と使用法でのinit機能を理解するgo:目的と使用法でのinit機能を理解するMay 01, 2025 am 12:16 AM

initistoistoInitializevariables、setupconutupurations、orforformndexedarysetupbe foreThemainfunctionexecutes.useinitby:1)inginginyourcodeTorunautorunaintalunain、2)KeepingItshortandpocusedonsimpletasks、3)ConsididiriveSusinginsingingingingingingingingingingingingingingingingingingingingingingsingpltassksを使用すると、

GOインターフェイスの理解:包括的なガイドGOインターフェイスの理解:包括的なガイドMay 01, 2025 am 12:13 AM

go interfacesaremethodsignaturesetsetsattypesmustimplement、unableingpolymorphism withintinheritance forcleaner、modularcode.theyareimplictilistifisisfiestified、houseforfflexibleapisanddeaupling、busrecarefulusoavoidoidoimoidimeerrororsypertety。

GOのパニックからの回復:いつ、どのように使用するか()GOのパニックからの回復:いつ、どのように使用するか()May 01, 2025 am 12:04 AM

Goで回復()関数を使用して、パニックから回復します。特定の方法は次のとおりです。1)回復()を使用して、延期関数でパニックをキャプチャして、プログラムのクラッシュを避けます。 2)デバッグの詳細なエラー情報を記録します。 3)特定の状況に基づいてプログラムの実行を再開するかどうかを決定します。 4)パフォーマンスに影響を及ぼさないように注意して使用します。

「文字列」をどのように使用しますかGoで文字列を操作するパッケージ?「文字列」をどのように使用しますかGoで文字列を操作するパッケージ?Apr 30, 2025 pm 02:34 PM

この記事では、弦の操作にGOの「文字列」パッケージを使用し、効率を高め、ユニコードを効果的に処理するための一般的な機能とベストプラクティスの詳細を説明します。

「crypto」をどのように使用しますかGoで暗号化操作を実行するパッケージ?「crypto」をどのように使用しますかGoで暗号化操作を実行するパッケージ?Apr 30, 2025 pm 02:33 PM

記事の詳細は、暗号化操作のためのGoの「暗号」パッケージ、安全な実装のための主要な生成、管理、およびベストプラクティスについて議論するためのパッケージ。

「時間」をどのように使用しますかGOの日付と時間を処理するパッケージ?「時間」をどのように使用しますかGOの日付と時間を処理するパッケージ?Apr 30, 2025 pm 02:32 PM

この記事では、現在の時間の取得、特定の時間の作成、文字列の解析、経過時間の測定など、日付、時間、およびタイムゾーンを処理するためのGoの「時間」パッケージの使用について詳しく説明しています。

「反射」をどのように使用しますかGOの変数のタイプと値を検査するパッケージ?「反射」をどのように使用しますかGOの変数のタイプと値を検査するパッケージ?Apr 30, 2025 pm 02:29 PM

記事では、可変検査と変更のためにGOの「反射」パッケージを使用して、方法とパフォーマンスの考慮事項を強調するために説明します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。