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