ホームページ > バックエンド開発 > Golang > golang がリクエストを受け取る

golang がリクエストを受け取る

王林
リリース: 2023-05-05 20:43:05
オリジナル
701 人が閲覧しました

インターネットの急速な発展とモバイルデバイスの普及に伴い、大量のデータの効率的な操作と処理を必要とするアプリケーションがますます増えています。新しい開発言語として、Go 言語は広く注目され、応用されています。この記事では、Go 言語を使用して HTTP リクエストを受信して​​処理する方法を紹介します。

1. HTTP リクエスト

HTTP (Hypertext Transfer Protocol) は、ファイル (HTML、画像、ビデオなど) を転送するために使用されるプロトコルであり、Web 上のデータです。交換の根拠となります。 HTTP プロトコルでは、クライアントはサーバーにリクエスト メッセージを送信し、サーバーはリクエストを受信した後に応答メッセージを返します。

HTTP リクエストは 3 つの部分で構成されます:

1. リクエスト行: リクエスト メソッド、リクエスト アドレス、HTTP プロトコル バージョンを含みます。一般的に使用されるリクエスト メソッドには、GET、POST、PUT、DELETE などが含まれます。

2. リクエスト ヘッダー: クライアント情報、リクエストされたファイル タイプ、キャッシュ制御などが含まれます。

3. リクエスト本文: リクエスト本文はオプションであり、通常はフォーム データを送信するために使用されます。

2. Go 言語での HTTP 処理

Go 言語には、HTTP リクエストを簡単に処理できる軽量の HTTP サーバーが組み込まれています。 Go 言語は、標準ライブラリの「net/http」パッケージを通じて HTTP サーバーとクライアントを実装できます。

  1. HTTP サーバー

HTTP サーバーは通常、クライアントと通信し、HTTP 要求に基づいて応答を返すプロセスまたはスレッドです。

Go 言語では、「net/http」パッケージの「ListenAndServe」関数を使用して HTTP サーバーを実装できます。

サンプル コードは次のとおりです。

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", indexHandler)
    http.ListenAndServe(":8080", nil)
}

func indexHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hello World")
}
ログイン後にコピー

このコードは、ローカル 8080 ポートをリッスンする単純な HTTP サーバーを実装します。クライアントが HTTP リクエストを開始すると、「indexHandler」関数が呼び出され、「Hello World」がクライアントに返されます。

  1. HTTP クライアント

HTTP クライアントは、サーバーにリクエストを送信し、サーバーの応答を処理するために使用されます。 Go 言語では、「http」パッケージの「Get」、「Post」、「Put」、「Delete」メソッドを使用して HTTP リクエストを実装できます。

サンプル コードは次のとおりです。

package main

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

func main() {
    resp, err := http.Get("http://example.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 クライアントを実装し、HTTP リクエストを「http://example.com」に送信し、応答コンテンツを返します。

3. HTTP リクエストの例

完全な HTTP リクエストの例を見てみましょう。このインスタンスは、GET メソッドと POST メソッドの処理を含む HTTP リクエストの処理を実装します。

package main

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

func main() {
    http.HandleFunc("/", indexHandler)

    http.ListenAndServe(":8080", nil)
}

func indexHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method == "GET" {
        getHandler(w, r)
    } else if r.Method == "POST" {
        postHandler(w, r)
    } else {
        http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed)
    }
}

func getHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "GET Request")
}

func postHandler(w http.ResponseWriter, r *http.Request) {
    body, err := ioutil.ReadAll(r.Body)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    fmt.Fprintf(w, "POST Request: %v", string(body))
}
ログイン後にコピー

このコードは、ローカル ポート 8080 をリッスンする単純な HTTP サーバーを実装します。クライアントが HTTP リクエストを開始すると、それが GET メソッドの場合は「getHandler」関数を呼び出してクライアントに「GET リクエスト」を返し、POST メソッドの場合は「postHandler」関数を呼び出してクライアントに戻ります。 「POSTリクエスト」とリクエスト本文をクライアントに送信します。

概要

この記事では、Go 言語を使用して HTTP リクエスト処理を実装する方法を紹介します。 Go 言語の標準ライブラリの「net/http」パッケージを使用すると、HTTP サーバーとクライアントを簡単に実装でき、GET、POST、PUT、DELETE などの HTTP メソッドがサポートされます。効率的な HTTP 処理を求める場合は、Go 言語を使用してみてください。

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

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