Bind URI
ShouldBindUri melakukan bind parameter path URI langsung ke struct menggunakan tag struct uri. Dikombinasikan dengan tag validasi binding, ini memungkinkan Anda memvalidasi parameter path (seperti memerlukan UUID yang valid) dengan satu panggilan.
Ini berguna ketika route Anda berisi data terstruktur — seperti ID resource atau slug — yang ingin Anda validasi dan periksa tipenya sebelum digunakan.
package main
import ( "net/http"
"github.com/gin-gonic/gin")
type Person struct { ID string `uri:"id" binding:"required,uuid"` Name string `uri:"name" binding:"required"`}
func main() { route := gin.Default()
route.GET("/:name/:id", func(c *gin.Context) { var person Person if err := c.ShouldBindUri(&person); err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) return } c.JSON(http.StatusOK, gin.H{"name": person.Name, "uuid": person.ID}) })
route.Run(":8088")}Uji coba
# Valid UUID -- binding succeedscurl http://localhost:8088/thinkerou/987fbc97-4bed-5078-9f07-9141ba07c9f3# Output: {"name":"thinkerou","uuid":"987fbc97-4bed-5078-9f07-9141ba07c9f3"}
# Invalid UUID -- binding fails with validation errorcurl http://localhost:8088/thinkerou/not-uuid# Output: {"error":"Key: 'Person.ID' Error:Field validation for 'ID' failed on the 'uuid' tag"}