С каким типом данных умеет работать GIN

«С каким типом данных умеет работать GIN» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Gin работает с различными типами данных для обработки HTTP-запросов и ответов. Основные поддерживаемые форматы:

  1. 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)
})
  1. 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)
})
  1. XML — аналогично JSON, но для XML.
c.XML(200, gin.H{"message": "hey"})
  1. YAML — требует ручной обработки или библиотек.

  2. Произвольные данные — через c.Data() для бинарных данных, текста и т.д.

Gin также поддерживает кастомные парсеры через binding и рендереры.