ホームページ > バックエンド開発 > Golang > golang は http を実装します

golang は http を実装します

王林
リリース: 2023-05-22 15:33:49
オリジナル
1547 人が閲覧しました

1. はじめに
RESTful API の人気が高まるにつれ、http サービスを自分で開発しようとする開発者が増えています。効率的で並列性の高い言語である golang の net/http ライブラリは、信頼性が高くパフォーマンスの高い http サービスを簡単に構築するのに役立ちます。今日は、golang を使用して http を実装する方法を学びます。

2. 準備作業
まず golang 環境をインストールし、golang のパッケージ管理ツール go mod を使用してパッケージの依存関係を管理する必要があります。

3. Golang は http
を実装します。Golang の net/http ライブラリを使用して http サービスを実装できます。具体的な手順は次のとおりです:

1. net/http パッケージと fmt をインポートします。 package
net/http パッケージが提供する http サービス関連のインターフェイスを使用するには、net/http パッケージをインポートする必要があり、ログを出力するには fmt パッケージを使用します。

import (
    "fmt"
    "net/http"
)
ログイン後にコピー

2. http サービスの実装
net/http ライブラリが提供するインターフェイスを呼び出すことで http サービスを実装できます。このうち http.HandleFunc はルートの登録に使用されます。コールバック関数のパラメータ resp と req は、それぞれ応答と要求を表します。

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

func myHandler(resp http.ResponseWriter, req *http.Request) {
    fmt.Println("收到请求!")
    resp.Write([]byte("Hello world!"))
}
ログイン後にコピー

3. http サービスの実行
コマンド ラインでプロジェクトのルート ディレクトリを入力し、次のコマンドを実行します:

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

この時点では、ブラウザ /localhost:8080 で、「Hello world!」が表示されます。これは完全な http サービスの実装です。

4. ルートマッチング
実際の開発では、ルートごとに異なる処理ロジックを指定する必要があります。 golang の http パッケージは、http.HandleFunc 関数を使用してルートを登録するという、単純なルート マッチング方法を提供します。

上記の例では、デフォルトのルーティング文字「/」を使用しました。これは、受け入れたすべてのリクエストが処理のために myHandler に渡されることを意味します。実際のアプリケーションでは、通常、ルートごとに異なる処理ロジックを指定する必要があります。ルート マッチングは次の方法で実現できます:

http.HandleFunc("/user", userHandler)
http.HandleFunc("/book", bookHandler)
ログイン後にコピー

この方法では、http://localhost:8080/user がリクエストされると、userHandler 関数が実行されます。本がリクエストされると、bookHandler 関数が実行されます。

5. ミドルウェア
ミドルウェアは非常に一般的なモードで、http リクエストの処理プロセスで重要な役割を果たします。 golang の http ライブラリはミドルウェアを実装する簡単な方法を提供しており、http.HandlerFunc を使用してミドルウェアを実装する関数をカプセル化できます。

以下は、現在のリクエストの時間を記録するための簡単なミドルウェアの例です:

func logMiddleware(next http.HandlerFunc) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        start := time.Now()
        next(w, r)
        fmt.Printf("%s %s
", r.Method, r.URL.Path, time.Since(start))
    }
}

http.HandleFunc("/", logMiddleware(myHandler))
ログイン後にコピー

このコードでは、logMiddleware ミドルウェアを定義し、その中に myHandler をラップします。 logMiddleware 関数の戻り値は、ResponseWriter パラメーターと Request パラメーターを受け取り、関数内で現在のリクエストのメソッド、パス、処理時間を出力し、最後に next を呼び出して実行を継続する関数です。実際のアプリケーションでは、ID 認証、リクエスト パラメーターの検証などのロジックを logMiddleware 実装に追加できます。

6. エラー処理
実際のアプリケーションでは、http リクエストで発生する可能性のあるエラーを処理する必要があります。 golang の http ライブラリは、http.Error 関数を使用した簡単なエラー処理メソッドを提供します。

以下は簡単なエラー処理の例です:

func myHandler(w http.ResponseWriter, r *http.Request) {
    file, err := os.Open("abc.txt")
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    defer file.Close()
}
ログイン後にコピー

このコードでは、存在しないファイルを開こうとし、エラーが発生した場合は http.Error を使用してエラー応答を返します。が発生します。 http.Error の最初のパラメータは応答を表し、2 番目のパラメータはエラー メッセージ、3 番目のパラメータは http ステータス コードです。

7. 概要
この記事では、golang を使用して http サービスを実装する方法を紹介しました。具体的には、golang の net/http ライブラリを使用して http サービス、ルート マッチング、ミドルウェア、エラー処理を実装する方法を学びました。初心者の場合、これらの知識ポイントをマスターすれば、簡単な http サービスを作成するのに十分です。

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

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