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