don't stop believing

Bind Uri 본문

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이 잘되고 지정한데로 리턴됩니다.


'Golang > Gin' 카테고리의 다른 글

Goroutines inside a middleware  (0) 2019.03.14
How to write log file  (0) 2019.03.14
Only Bind Query String  (0) 2019.03.09
Bind Query String or Post Data  (0) 2019.03.09
Model binding and validation  (0) 2019.03.06
Comments