検索
ホームページバックエンド開発Golanggolang net リクエスト外部

Golang は、ますます多くの開発者に支持されている強力で信頼性の高いプログラミング言語です。中でも、ネットワーク リクエストの処理は Golang の強みの 1 つであり、この記事では Golang がどのように外部ネットワーク リソースをリクエストするかについて説明します。

  1. Golang の HTTP パッケージ

Golang 標準ライブラリには、クライアントとサーバー間の通信を非常に簡単にするための HTTP パッケージが付属しています。 HTTP クライアントは、ユーザーが HTTP 要求を作成して応答を取得できるようにする使いやすいインターフェイスを提供します。

次のコードは、HTTP パケットを使用して Web ページのコンテンツを取得する方法を示しています。

package main

import (
    "fmt"
    "net/http"
)

func main() {
    resp, err := http.Get("http://www.baidu.com")
    if err != nil {
        fmt.Println("Error:", err)
    }

    defer resp.Body.Close()

    fmt.Println(resp.Status)
}

上記のコードでは、http.Get() メソッドを呼び出して、Web ページのコンテンツを取得します。 Baidu ホームページにアクセスし、返された応答とエラーを 2 つの変数、それぞれ sp と err に割り当てます。アクセスエラーが発生した場合はエラーメッセージが出力され、エラーがなかった場合はレスポンスボディがクローズされ、レスポンスのステータスコードが出力されます。

  1. Golang の TCP パッケージ

HTTP では実行できないタスクを実行する必要がある場合、Golang の TCP パッケージが役割を果たすことができます。このパッケージは、完全にカスタマイズ可能なネットワーク クライアントとサーバーを提供し、ユーザーが希望する方法で通信できるようにします。

以下は、TCP パケットを使用してデータを送信する例です:

package main

import (
  "fmt"
  "net"
)

func main() {
  conn, err := net.Dial("tcp", "golang.org:80")
  if err != nil {
    fmt.Println("Error:", err)
  }

  fmt.Fprintf(conn, "GET / HTTP/1.0

")
  status, err := bufio.NewReader(conn).ReadString('
')

  fmt.Println(status)
}

上記のコードでは、net.Dial() メソッドを使用して TCP 接続を作成し、アクセス プロトコルを指定します。 HTTPとしてアクセスし、アドレスはgolang.org:80です。次に、fmt.Fprintf() メソッドを使用して、確立された接続に HTTP リクエストを送信します。最後に、応答接続からデータを読み取り、応答コードを端末に出力します。

  1. Golang のサードパーティ パッケージ

Golang 標準ライブラリの HTTP および TCP パッケージに加えて、選択できるサードパーティ パッケージが多数あります。これらは、より強力な機能を備えた、より柔軟な API を提供します。

以下は、言及する価値のあるいくつかのサードパーティ パッケージです:

3.1 Golang の RESTful API クライアント-----resty

resty は Golang の軽量パッケージです。 HTTP、HTTPS、およびいくつかの基本認証をサポートする API クライアント。 Resty を使用すると、HTTP ネットワーク経由でのデータのリクエストが非常に簡単になります。以下は、Resty を使用して HTTP リクエストを行う例です。

package main

import (
    "fmt"
    "github.com/go-resty/resty/v2"
)

func main() {
    client := resty.New()
    resp, err := client.R().
        EnableTrace().
        Get("http://www.baidu.com")
    if err != nil {
        fmt.Println("Error:", err)
    }

    fmt.Println(resp.Body())
}

上記のコードでは、resty.New() メソッドを使用して Resty クライアントを作成し、client.R() メソッドを使用します。リクエストを送信します。 EnableTrace() メソッドを使用してデバッグ トレースをオンにし、その後のデバッグを容易にします。最後にレスポンスボディを出力します。

3.2 Golang の HTTP フレームワーク-----Gin

Gin は、Golang の高速かつ柔軟な HTTP フレームワークであり、他のフレームワークよりもパフォーマンスが速く、ミドルウェア プラグイン機構を備えています。ルーティング、コンソール出力、パラメータ解析、フォーム処理、その他の機能をサポートします。以下は、Gin フレームワークを使用して HTTP リクエストを処理する例です。

package main

import (
    "github.com/gin-gonic/gin"
)

func main() {
    r := gin.Default()

    r.GET("/", func(c *gin.Context) {
        c.String(200, "Hello, World!")
    })

    r.GET("/ping", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "pong",
        })
    })

    r.Run(":8080")
}

上記のコードでは、gin.Default() メソッドを使用して事前定義されたルーティング エンジンを作成し、r.GET を使用します。 () メソッドを使用して HTTP GET リクエストを処理します。ルートルート「/」の場合は c.String() メソッドを使用して「Hello, World!」を返し、ルート「/ping」の場合は c.JSON() メソッドを使用して JSON 形式を返します。最後に、r.Run() メソッドを使用して、Gin を起動します。

  1. 概要

この記事では、Golang が HTTP パッケージや TCP パッケージ、いくつかのサードパーティ パッケージなどの外部ネットワーク リソースをリクエストする方法を紹介します。開発者はニーズに応じて適切な方法を選択してネットワークリクエストを行うことができ、効率的にGolangアプリケーションの開発を完了できます。

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

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Go Binary Encoding/Decoding:「エンコード/バイナリ」パッケージを使用してくださいGo Binary Encoding/Decoding:「エンコード/バイナリ」パッケージを使用してくださいMay 08, 2025 am 12:13 AM

GOは、バイナリエンコードとデコードに「エンコード/バイナリ」パッケージを使用します。 1)このパッケージは、binary.writeとbinary.read関数を作成して、データを書き込み、読み取ります。 2)正しいエンディアン(BigendianやLittleendianなど)の選択に注意してください。 3)データのアラインメントとエラー処理も重要です。データの正確性とパフォーマンスを確保します。

GO:標準の「バイト」パッケージを使用したバイトスライス操作GO:標準の「バイト」パッケージを使用したバイトスライス操作May 08, 2025 am 12:09 AM

「バイト」パッケージを包装してください

エンコード/バイナリパッケージに移動:バイナリ操作のパフォーマンスの最適化エンコード/バイナリパッケージに移動:バイナリ操作のパフォーマンスの最適化May 08, 2025 am 12:06 AM

Encoding/binaryPackageIngoiseffictevectiveforptimizingdueToitssuportforendiannessandannessandAhandling.toenhanceperformance:1)usebinary.native.nativedianfornatiannesstoavoidbyteswapping.2)batchedandandandwriteTerationtoredutei/ober

BYTESパッケージに移動:短いリファレンスとヒントBYTESパッケージに移動:短いリファレンスとヒントMay 08, 2025 am 12:05 AM

GOのBYTESパッケージは、主にバイトスライスを効率的に処理するために使用されます。 1)bytes.bufferを使用すると、弦のスプライシングを効率的に実行して、不必要なメモリの割り当てを避けます。 2)バイト機能を使用して、バイトスライスをすばやく比較します。 3)bytes.index、bytes.split、bytes.replaceall関数は、バイトスライスの検索と操作に使用できますが、パフォーマンスの問題に注意する必要があります。

BYTESパッケージに移動:バイトスライス操作の実用的な例BYTESパッケージに移動:バイトスライス操作の実用的な例May 08, 2025 am 12:01 AM

バイトパッケージは、バイトスライスを効率的に処理するためのさまざまな機能を提供します。 1)bytes.containsを使用して、バイトシーケンスを確認します。 2)bytes.splitを使用してバイトスライスを分割します。 3)バイトシーケンスバイトを交換します。 4)bytes.joinを使用して、複数のバイトスライスを接続します。 5)bytes.bufferを使用してデータを作成します。 6)エラー処理とデータ検証のためのBYTES.MAPの組み合わせ。

バイナリエンコード/デコードに移動:例を備えた実用的なガイドバイナリエンコード/デコードに移動:例を備えた実用的なガイドMay 07, 2025 pm 05:37 PM

GOのエンコード/バイナリパッケージは、バイナリデータを処理するためのツールです。 1)小エンディアンおよび大規模なエンディアンバイト順序をサポートし、ネットワークプロトコルとファイル形式で使用できます。 2)複雑な構造のエンコードとデコードは、読み取りおよび書き込み関数を介して処理できます。 3)特に異なるシステム間でデータが送信される場合、それを使用するときに、バイトの順序とデータ型の一貫性に注意してください。このパッケージは、バイナリデータの効率的な処理に適していますが、バイトスライスと長さを慎重に管理する必要があります。

「バイト」パッケージ:比較、結合、分割など「バイト」パッケージ:比較、結合、分割などMay 07, 2025 pm 05:29 PM

「バイト」パッケージを積極的に使用してください

Go Stringsパッケージ:知る必要がある必須関数Go Stringsパッケージ:知る必要がある必須関数May 07, 2025 pm 04:57 PM

go'sstringspackageincludesentionsentionslikecontains、trimspace、split、andreplaceall.1)

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン