رفتن به محتوا

اتصال داده

Gin یک سیستم اتصال قدرتمند ارائه می‌دهد که داده‌های درخواست را به structهای Go تجزیه و به طور خودکار اعتبارسنجی می‌کند. به جای فراخوانی دستی c.PostForm() یا خواندن c.Request.Body، یک struct با تگ‌ها تعریف کنید و اجازه دهید Gin کار را انجام دهد.

Gin دو خانواده از متدهای اتصال ارائه می‌دهد:

متددر صورت خطازمان استفاده
c.Bind، c.BindJSON و غیرهبه طور خودکار c.AbortWithError(400, err) را فراخوانی می‌کندزمانی که می‌خواهید Gin پاسخ‌های خطا را مدیریت کند
c.ShouldBind، c.ShouldBindJSON و غیرهخطا را برای مدیریت شما برمی‌گرداندزمانی که می‌خواهید پاسخ‌های خطای سفارشی داشته باشید

در اکثر موارد، برای کنترل بیشتر بر مدیریت خطا ShouldBind را ترجیح دهید.

type LoginForm struct {
User string `form:"user" binding:"required"`
Password string `form:"password" binding:"required"`
}
func main() {
router := gin.Default()
router.POST("/login", func(c *gin.Context) {
var form LoginForm
// ShouldBind checks Content-Type to select a binding engine automatically
if err := c.ShouldBind(&form); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
c.JSON(http.StatusOK, gin.H{"status": "logged in"})
})
router.Run(":8080")
}

Gin می‌تواند داده‌ها را از منابع مختلف متصل کند: JSON، XML، YAML، TOML، داده فرم (URL-encoded و multipart)، رشته‌های پرس‌وجو، پارامترهای URI و هدرها. از تگ struct مناسب (json، xml، yaml، form، uri، header) برای نگاشت فیلدها استفاده کنید. قوانین اعتبارسنجی در تگ binding قرار می‌گیرند و از سینتکس go-playground/validator استفاده می‌کنند.