رفتن به محتوا

اتصال داده

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

Bind در مقابل ShouldBind

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

در این بخش