Ответ
Gin работает с различными типами данных для обработки HTTP-запросов и ответов. Основные поддерживаемые форматы:
- JSON — основной формат для REST API. Gin автоматически парсит JSON из тела запроса и сериализует структуры в ответ.
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
router.POST("/user", func(c *gin.Context) {
var user User
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, user)
})
- Form-Data и Query Parameters — для данных из HTML-форм или URL.
router.POST("/form", func(c *gin.Context) {
name := c.PostForm("name")
age := c.DefaultQuery("age", "18")
c.String(200, "Name: %s, Age: %s", name, age)
})
- XML — аналогично JSON, но для XML.
c.XML(200, gin.H{"message": "hey"})
-
YAML — требует ручной обработки или библиотек.
-
Произвольные данные — через
c.Data()для бинарных данных, текста и т.д.
Gin также поддерживает кастомные парсеры через binding и рендереры.