golang httpの実装

王林
リリース: 2023-05-21 16:29:09
オリジナル
481 人が閲覧しました

Golang は、分散システムやネットワーク プログラミングの構築に最適な、高速、シンプル、効率的、安全なプログラミング言語です。 Golang では、HTTP プロトコルに基づいて Web アプリケーションを構築するための組み込み http パッケージが提供されています。この記事では、Golang の http パッケージを使用して簡単な Web サーバーを実装する方法を紹介します。

基本知識

http パッケージを使用する前に、いくつかの基本的な概念と用語を理解する必要があります。ここでは、いくつかの重要な概念を示します:

  • HTTP プロトコル: HTTP は、クライアントとサーバーの間でデータを転送するために使用されるプロトコルです。さまざまなメソッド (GET、POST、PUT、DELETE など) を使用してリクエストを送信し、応答を受信できます。
  • HTTP リクエスト: HTTP リクエストは、リクエスト行、リクエスト ヘッダー、リクエスト本文で構成されます。リクエスト行にはメソッド、URI、プロトコルのバージョンなどの情報が含まれ、リクエスト ヘッダーにはカスタムまたは標準ヘッダー情報が含まれ、リクエストの本文にはリクエスト データが含まれます。
  • HTTP 応答: HTTP 応答は、応答行、応答ヘッダー、および応答本文で構成されます。応答行にはステータス コードとステータスの説明が含まれ、応答ヘッダーにはカスタムまたは標準のヘッダー情報が含まれ、応答本文には応答データが含まれます。

実装手順

次に、Golang の http パッケージを使用して単純な Web サーバーを実装する方法を見てみましょう。実装手順は次のとおりです:

  1. http パッケージのインポート

開始する前に、コード ファイルの先頭で http パッケージをインポートする必要があります:

import "net/http"
ログイン後にコピー
  1. プロセッサ関数を作成する

Golang では、プロセッサ関数は http.ResponseWriter および *http.Request パラメータを受け入れる関数です。その役割は、リクエストを処理し、クライアントに応答を返すことです。以下はハンドラー関数の例です。

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

この関数は http.ResponseWriter パラメーターと http.Request パラメーターを受け入れます。 http.ResponseWriter は、クライアントに応答を送信するために使用されます。http.Request には、クライアントによって送信されたリクエスト情報が含まれます。

このプロセッサ関数の機能は、文字列「Hello World!」をクライアントに送信することです。

  1. ルーターの作成

Golang の http パッケージでは、ルーターを使用してリクエストをさまざまなプロセッサ機能にディスパッチします。ルーターを作成するメソッドは次のとおりです。

router := http.NewServeMux()
ログイン後にコピー

このメソッドは *http.ServeMux 型のオブジェクトを返します。このオブジェクトは、ルーティング ルールとプロセッサ関数の間のマッピング関係を保存するために使用されます。

  1. ルーティング ルールの作成

ルーティング ルールを作成するときは、ルーターの HandleFunc() メソッドを使用する必要があります。このメソッドは、パスとプロセッサ関数という 2 つのパラメータを受け取ります。以下はルーティング ルールの例です:

router.HandleFunc("/", handlerFunc)
ログイン後にコピー

このルーティング ルールの機能は、ルート パス "/" をハンドラー関数 handlerFunc にマップすることです。クライアントがルート パスを要求すると、サーバーは呼び出します。 handlerFunc を使用してリクエストを処理し、レスポンスを返します。

  1. サーバーの起動

最後のステップは、サーバーを起動し、クライアント接続をリッスンしてリクエストを処理することです。 Golang の ListenAndServe() メソッドを使用してサーバーを起動します。このメソッドは、サーバー アドレスとルーターの 2 つのパラメーターを受け入れます。以下はサーバーの起動例です。

http.ListenAndServe(":8080", router)
ログイン後にコピー

このサーバーはローカル ポート 8080 をリッスンし、ルーターを使用してクライアント要求を処理します。

完全なコード

以下は完全な Web サーバーのサンプル コードです:

package main

import (
    "fmt"
    "net/http"
)

func handlerFunc(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World!")
}

func main() {
    router := http.NewServeMux()
    router.HandleFunc("/", handlerFunc)

    fmt.Println("Server started on http://localhost:8080")
    http.ListenAndServe(":8080", router)
}
ログイン後にコピー

Test

コード ファイルが置かれているディレクトリに、次のコマンドを使用してサーバーを起動します:

go run main.go
ログイン後にコピー

次に、ブラウザで http://localhost:8080 にアクセスすると、サーバーが正常に起動したことを示す「Hello World!」という文字列が表示されます。リクエストを処理できます。

概要

この記事では、Golang の http パッケージを使用して単純な Web サーバーを実装する方法を紹介します。このサーバーはクライアント要求をリッスンし、応答を返すことができます。 HTTP プロトコルに基づく Web アプリケーションは、Golang の非常に実用的な機能の 1 つである http パッケージを使用して簡単に構築できます。この記事が、Golang の http パッケージと Web サーバーの構築方法について詳しく学ぶのに役立つことを願っています。

以上がgolang httpの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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