LoginSignup
9
4

More than 3 years have passed since last update.

[Golang]Ginを使った、すっきりルーティングのサンプル

Last updated at Posted at 2019-09-09

はじめに

今回は、簡単な内容ですが、Ginでのルーティングファイルについて、共有させて頂きます。

サンプルコード

以下のファイルは、それぞれ
$HOME/go/src/github.com/myProject/myRepository/直下にあるとします。
ghqでプロジェクト管理した感じを想定してます。

server/routes.go
package server

import (
    "net/http"
    "github.com/myProject/myRepository/handler"
    "github.com/gin-gonic/gin"
)

func defineRoutes(r gin.IRouter) {
    v1 := r.Group("/")
    {
        v1.GET("/test", handler.myFunction)
    }
}
handler/yay.go
package handler

import (
    "github.com/gin-gonic/gin"
)

func myFunction(c *gin.Context) {
    // ここに処理を書く
}
実際にアクセスする際のURL
http://hogehoge.com/test

関数の定義でスッキリさせる

server/routes.go下方
func defineRoutes(r gin.IRouter) {
    v1 := r.Group("/")
    {
        v1.GET("/test", handler.myFunction)
    }
}

ここでv1を用意することで、URLが増えてきても、すっきり分かりやすく追加していける。
ちなみに、たくさんルーターを用意した場合、こんな感じになります。

ルーターが増えてきたときのイメージ
    v1 := r.Group("/")

    {
        v1.GET("/test", handler.myFunction)
    }
    {
        v1.POST("/test2", handler.myFunction2)
        v1.PUT("/test2/create", handler.myFunction3)
        v1.GET("/test2/hoge", handler.myFunction4)
        v1.DELETE("/test2/delete", handler.myFunction5)
    }
    {
        v1.GET("/test3/fuga", handler.myFunction6)
        v1.GET("/test3", handler.myFunction7)
    }
    {
        v1.GET("/test4/poon", handler.myFunction8)
    }

増えてきても、すっきりしています。
この辺りは、よくあるFWのルーティングファイルの書き方と似ていて分かりやすいですね。

さいごに

今回は、解説なしで共有だけさせて頂きました。
いつか、理解を深めてがっつり解説したい。

最期まで、ありがとうございました。

9
4
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
9
4