Go Gin設計應用程式的REST API可使用RouterGroup.Group()
做路徑分組。
範例
範例環境:
- Go 1.16
- Gin 1.7.2
例如下面在/demo
下分為/v1
及/v2
,下面又有各自的/hello
及/hi
。
package main
import "github.com/gin-gonic/gin"
func main() {
router := gin.Default()
demo := router.Group("/demo")
v1 := demo.Group("/v1")
v1.GET("/hello", func(c *gin.Context) {
c.JSON(200, "Hello - v1")
})
v1.GET("/hi", func(c *gin.Context) {
c.JSON(200, "Hi - v1")
})
v2 := demo.Group("/v2")
v2.GET("/hello", func(c *gin.Context) {
c.JSON(200, "Hello - v2")
})
v2.GET("/hi", func(c *gin.Context) {
c.JSON(200, "Hi - v2")
})
router.Run()
}
使用cURL測試上面每個end point。
$ curl "http://localhost:8080/demo/v1/hello"
"Hello - v1"
$ curl "http://localhost:8080/demo/v1/hi"
"Hi - v1
$ curl "http://localhost:8080/demo/v2/hello"
"Hello - v2"
$ curl "http://localhost:8080/demo/v2/hi"
"Hi - v2"
因為RouterGroup.Group()
回傳的還是RouterGroup
,且RouterGroup
實作IRoutes
介面且RouterGroup.GET()
回傳的還是IRoutes
,所以也能改用下面fluent的風格寫法。
package main
import "github.com/gin-gonic/gin"
func main() {
router := gin.Default()
demo := router.Group("/demo")
demo.Group("/v1").
GET("/hello", func(c *gin.Context) {
c.JSON(200, "Hello - v1")
}).
GET("/hi", func(c *gin.Context) {
c.JSON(200, "Hi - v1")
})
demo.Group("/v2").
GET("/hello", func(c *gin.Context) {
c.JSON(200, "Hello - v2")
}).
GET("/hi", func(c *gin.Context) {
c.JSON(200, "Hi - v2")
})
router.Run()
}
參考github。
沒有留言:
張貼留言