[golang] ginを用いたルーティング機能
ginを用いてサーバーを構築しチャットアプリを作成したので、その際に気をつけたルーティングやその書き方についてまとめておく
やったこと
注意するところ
- ginの設定(r.Group, r.Useなど)は、上から順に実行されていく
- つまり、書いたところより下にのみ適応される
- grouping, middleware などがそうなっている
コード例
package main import ( "api/api" "api/db" "github.com/gin-contrib/static" "github.com/gin-gonic/gin" ) func setupRouter() *gin.Engine { r := gin.New() // 静的ファイルのパスを指定 r.Use(static.Serve("/", static.LocalFile("./front/dist", true))) // これより下のパスに対しては、全て/api/~ になる apiGroup := r.Group("/api") apiGroup.POST("/login", api.LoginCheck) apiGroup.POST("/users", api.RegisterNewUser) apiGroup.POST("/account", api.UpdateMyInfo) apiGroup.Use(api.LoginCheckMiddleWare()) { apiGroup.GET("/users", api.GetAllUsers) apiGroup.POST("/logout", api.Logout) apiGroup.GET("/chats", api.GetAllMessages) apiGroup.PATCH("/chats", api.EditChat) apiGroup.POST("/rooms", api.CreateNewGroup) } return r } func main() { // DB の初期設定をする _db, err := db.DbInit() if err != nil { panic("") } defer _db.Close() // Gin出力設定 gin.ForceConsoleColor() // setupLogOutput() r := setupRouter() r.Run(":8888") }