رفتن به محتوا

اتصال داده

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 استفاده می‌کنند.