Golang/Gin

Bind Uri

Tongchun 2019. 3. 14. 14:44

url path에 paramater가 추가되는 경우의 binding 방법입니다.

https://github.com/gin-gonic/gin#bind-uri


바로 코드를 보겠습니다.

package main

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

type User struct {
	Name string `uri:"name" binding:"required"`
	Age  uint16 `uri:"age" binding:"required"`
	ID   string `uri:"id" binding:"required,uuid"`
}

func setupRouter() *gin.Engine {
	// Disable Console Color
	// gin.DisableConsoleColor()
	r := gin.Default()

	r.GET("/user/:name/age/:age/id/:id", func(c *gin.Context) {
		var user User
		if err := c.ShouldBindUri(&user); err != nil {
			c.JSON(400, gin.H{"msg": err})
			return
		}

		c.JSON(200, gin.H{"name": user.Name, "age": user.Age, "id": user.ID})
	})

	return r
}

func main() {
	r := setupRouter()
	// Listen and Server in 0.0.0.0:8080
	r.Run(":8080")
}

다른 binding 방법과 마찬가지로 struct를 만들고 c.ShouldBindUri()로 대입하면 됩니다.

실행하고 아래와 같이 호출해 봅니다.

http://localhost:8080/user/tongchun/age/42/id/123e4567-e89b-12d3-a456-426655440000


binding이 잘되고 지정한데로 리턴됩니다.