Ginルーターとルートグループ
エンジンのセットアップ、グループ、パスパラメーター
「Ginルーターとルートグループ」はCoddyKit上の無料Go Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGo Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Go Academyコースには全4レッスンが含まれています。
Ginとは
Ginは、Go向けの高性能なHTTP Webフレームワークです。radix treeルーターを使用し、ミドルウェア、JSONバインディング、バリデーションをサポートしているため、REST APIで広く利用されています。
インストールと基本設定
Ginをインポートして、エンジンを作成します。
go get github.com/gin-gonic/gin
package main
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{"message": "pong"})
})
r.Run(":8080")
}gin.Defaultとgin.New
gin.Default()にはLoggerとRecoveryのミドルウェアが含まれます。gin.New()はミドルウェアなしのエンジンを作成します。ミドルウェアを完全に制御したい場合に使用します。
ルートメソッド
GET、POST、PUT、PATCH、DELETE、OPTIONS、HEAD、AnyなどのHTTPメソッドに対するルートを登録します。
r.GET("/users", listUsers)
r.POST("/users", createUser)
r.PUT("/users/:id", updateUser)
r.DELETE("/users/:id", deleteUser)パスパラメータ
c.Param("name")でパスパラメータを取り出します。
r.GET("/users/:id", func(c *gin.Context) {
id := c.Param("id")
c.JSON(200, gin.H{"id": id})
})クエリパラメータ
c.Queryとc.DefaultQueryでクエリパラメータを読み取ります。
page := c.DefaultQuery("page", "1")
limit := c.Query("limit") // "" if absentルートグループ
r.Groupを使用すると、関連するルートを共通のプレフィックスの下にまとめられます。グループに適用したミドルウェアは、そのグループ内のすべてのルートに影響します。
api := r.Group("/api/v1")
{
api.GET("/users", listUsers)
api.POST("/users", createUser)
api.PUT("/users/:id", updateUser)
}ネストしたグループ
グループは、より細かく構成するためにネストできます。
admin := r.Group("/admin")
admin.Use(AdminAuth())
{
admin.GET("/stats", getStats)
admin.DELETE("/users/:id", deleteUser)
}ルートなし/メソッド不許可
r.NoRouteとr.NoMethodを使用すると、404と405を適切に処理できます。
r.NoRoute(func(c *gin.Context) {
c.JSON(404, gin.H{"error": "not found"})
})静的ファイル
ディレクトリから静的ファイルを配信します。
r.Static("/static", "./public")
r.StaticFile("/favicon.ico", "./favicon.ico")http.Handlerとしてのエンジン
Ginの*gin.Engineはhttp.Handlerを実装しているため、タイムアウトを設定するカスタムhttp.Serverと組み合わせて使用できます。
srv := &http.Server{Addr: ":8080", Handler: r, ReadTimeout: 5*time.Second}
srv.ListenAndServe()クイックチェック
Ginでルートグループを使用する利点は何でしょうか。
まとめ:Ginのルーターとグループ
重要なポイント:
- gin.Default()にはLoggerとRecoveryが含まれ、gin.New()はカスタム設定に使用します
- パスパラメータにはc.Param、クエリパラメータにはc.Queryを使用します
- 共通のプレフィックスとミドルウェアにはr.Group("/prefix")を使用します
- Ginはhttp.Handlerを実装しているため、カスタムhttp.Serverと組み合わせて使用できます
よくある質問
「Ginルーターとルートグループ」レッスンは無料ですか?
はい。「Ginルーターとルートグループ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Go Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Go Academyコースには全4レッスンが含まれています。
「Ginルーターとルートグループ」で何を学びますか?
エンジンのセットアップ、グループ、パスパラメーター ブラウザで直接実行するハンズオンコードでGo Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Go Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのGo Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Ginルーターとルートグループ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このGo Academyレッスンでコードを書いて実行できますか?
はい。すべてのGo Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Ginルーターとルートグループ
- リクエストバインディングとバリデーション
- レスポンスヘルパーとステータスコード
- Ginミドルウェア:認証とロギング