اتصال URI
ShouldBindUri پارامترهای مسیر URI را مستقیماً با استفاده از تگهای uri در struct به آن متصل میکند. در ترکیب با تگهای اعتبارسنجی binding، این امکان را فراهم میکند تا پارامترهای مسیر (مانند نیاز به UUID معتبر) را با یک فراخوانی اعتبارسنجی کنید.
این زمانی مفید است که مسیر شما حاوی دادههای ساختاریافته — مانند شناسه منابع یا slug — است که میخواهید قبل از استفاده اعتبارسنجی و بررسی نوع کنید.
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")}تست
# 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"}