0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Golang ルーターについて

Posted at

ソースコード
https://github.com/okuyama-code/CRUD-Golang

func main() {
	// ルーターを作成します
	r := mux.NewRouter()

	// ルーターに各エンドポイントとハンドラ関数を登録します
	r.HandleFunc("/users", CreateUser).Methods("POST")    // POST /users で CreateUser ハンドラを呼び出す
	r.HandleFunc("/users/{id}", GetUser).Methods("GET")    // GET /users/{id} で GetUser ハンドラを呼び出す
	r.HandleFunc("/users/{id}", UpdateUser).Methods("PUT") // PUT /users/{id} で UpdateUser ハンドラを呼び出す
	r.HandleFunc("/users", DeleteUser).Methods("DELETE")   // DELETE /users で DeleteUser ハンドラを呼び出す
	r.HandleFunc("/users", GetUsers).Methods("GET")        // GET /users で GetUsers ハンドラを呼び出す

	// サーバーを起動します
	fmt.Println("サーバーをポート8080で起動します...")
	log.Fatal(http.ListenAndServe(":8080", r))
}

このコードは、Go言語でHTTPサーバーを起動するためのメイン関数です。

r := mux.NewRouter():mux.NewRouter()を使用してルーターを作成します。muxは一般的なルーターパッケージであり、HTTPリクエストのパスやメソッドに基づいて対応するハンドラ関数を呼び出すために使用されます。

r.HandleFunc("/users", CreateUser).Methods("POST"):ルーターに/usersパスとPOSTメソッドのエンドポイントを登録します。このエンドポイントはCreateUserハンドラ関数を呼び出します。

r.HandleFunc("/users/{id}", GetUser).Methods("GET"):ルーターに/users/{id}パスとGETメソッドのエンドポイントを登録します。{id}はパスパラメータであり、ユーザーIDを表します。このエンドポイントはGetUserハンドラ関数を呼び出します。

r.HandleFunc("/users/{id}", UpdateUser).Methods("PUT"):ルーターに/users/{id}パスとPUTメソッドのエンドポイントを登録します。このエンドポイントはUpdateUserハンドラ関数を呼び出します。

r.HandleFunc("/users", DeleteUser).Methods("DELETE"):ルーターに/usersパスとDELETEメソッドのエンドポイントを登録します。このエンドポイントはDeleteUserハンドラ関数を呼び出します。

r.HandleFunc("/users", GetUsers).Methods("GET"):ルーターに/usersパスとGETメソッドのエンドポイントを登録します。このエンドポイントはGetUsersハンドラ関数を呼び出します。

fmt.Println("サーバーをポート8080で起動します..."):サーバーの起動メッセージを出力します。

log.Fatal(http.ListenAndServe(":8080", r)):指定されたポート(ここでは8080)でHTTPサーバーを起動します。http.ListenAndServe関数は、指定されたポートでHTTPリクエストを受け付け、登録されたルーターに基づいてリクエストを処理します。エラーが発生した場合は、エラーメッセージを表示してプログラムを終了します。

このコードは、muxパッケージを使用してルーターを作成し、各エンドポイントと対応するハンドラ関数を登録します。登録されたハンドラ関数は、HTTPリクエストが対応するパスとメソッドにマッチすると呼び出されます。これにより、HTTPリクエストを処理するためのエンドポイントが作成されます。

最後に、指定されたポート(ここでは8080)でHTTPサーバーを起動します。これにより、指定されたポートに対してリクエストを受け付け、登録されたルーターに基づいてリクエストを処理することが可能になります。

このコードの目的は、特定のHTTPリクエストに対応するハンドラ関数を登録し、サーバーを起動することです。各エンドポイントは、HTTPメソッドとパスに基づいてリクエストを処理するハンドラ関数を指定します。サーバーが起動すると、指定されたポートでリクエストを待ち受け、適切なハンドラ関数を呼び出して処理します。


log.Fatal(http.ListenAndServe(":8080", r))は、Go言語の標準パッケージであるlogパッケージのFatal関数を使用して、HTTPサーバーの起動とリスンを行います。

具体的には、http.ListenAndServe(":8080", r)は指定されたポート(ここでは8080)でHTTPリクエストを受け付け、登録されたルーターに基づいてリクエストを処理するためのHTTPサーバーを起動します。

log.Fatalは、このHTTPサーバーの起動を監視し、エラーが発生した場合にプログラムを停止します。具体的には、以下のような動作をします:

http.ListenAndServeがエラーを返した場合、エラーメッセージを出力し、プログラムの実行を停止します。
プログラムの実行が停止されると、終了コード1(一般的にはエラー)でプログラムが終了します。
このコードの目的は、指定されたポートでHTTPサーバーを起動し、リクエストを受け付けることです。http.ListenAndServeはHTTPサーバーを起動し、リクエストを受け付けるための準備を行います。そして、log.FatalはHTTPサーバーの起動時にエラーが発生した場合にプログラムを停止し、エラーメッセージを出力します。

このようにすることで、HTTPサーバーの起動時に問題が発生した場合にプログラムが停止し、エラーメッセージを確認することができます。エラーが発生した場合には、エラーの原因や詳細情報をログに出力し、早期に問題を特定して修正することができます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?