0Pricing
Go Academy · Урок

Вспомогательные средства ответов и коды состояния

c.JSON, c.AbortWithError и ответы с ошибками

«Вспомогательные средства ответов и коды состояния» — бесплатный урок Go Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

c.JSON

c.JSON(statusCode, obj) сериализует obj в JSON и устанавливает Content-Type в значение application/json. Это самый распространённый способ отправки ответа.

c.JSON(http.StatusOK, gin.H{
    "id":   user.ID,
    "name": user.Name,
})

gin.H

gin.H — это сокращённая запись для map[string]any. Используйте её для разовых объектов JSON, если не хотите определять структуру.

c.JSON(200, gin.H{"message": "created", "id": id})

Константы статусов HTTP

Для ясности используйте константы http.Status*, а не необработанные числа:

c.JSON(http.StatusCreated, gin.H{"id": id})
c.JSON(http.StatusBadRequest, gin.H{"error": "invalid input"})
c.JSON(http.StatusInternalServerError, gin.H{"error": "internal error"})

c.String и c.Data

Отправляйте обычный текст с помощью c.String или произвольные байты с помощью c.Data:

c.String(200, "Hello, %s!", name)
c.Data(200, "application/octet-stream", fileBytes)

c.File и c.FileAttachment

Раздавайте файл с диска — встроенным в страницу или как загрузку:

c.File("./public/report.pdf")           // inline
c.FileAttachment("./report.pdf", "report.pdf") // download

c.Redirect

Отправляйте HTTP-перенаправление (301 — постоянное, 302 — временное):

c.Redirect(http.StatusMovedPermanently, "/new-url")

c.AbortWithStatus

Прекращает обработку цепочки запроса и записывает пустой ответ с указанным кодом статуса. В отличие от c.JSON, этот вызов вызывает Abort и не позволяет выполнять последующие обработчики.

c.AbortWithStatus(http.StatusUnauthorized)

c.Error

Добавляйте ошибки в контекст, не записывая ответ. Промежуточное ПО может собрать их и в конце сформировать единый ответ с ошибкой.

c.Error(fmt.Errorf("database error: %w", err))

Заголовки ответа

Устанавливайте собственные заголовки ответа до вызова c.JSON или c.Data:

c.Header("X-Request-ID", requestID)
c.Header("Cache-Control", "max-age=3600")

Формирование XML

Gin также поддерживает ответы в форматах XML и YAML:

c.XML(200, user) // requires xml struct tags
c.YAML(200, user)

Пользовательская структура ответа

Определите стандартную оболочку ответа API, чтобы формат был единообразным для всех конечных точек:

type APIResponse struct {
    Success bool   `json:"success"`
    Data    any    `json:"data,omitempty"`
    Error   string `json:"error,omitempty"`
}

Быстрая проверка

Чем c.AbortWithStatus отличается от c.Status?

Повторение: вспомогательные средства для ответов

Ключевые моменты:

  • c.JSON(statusCode, obj) — основной способ отправки ответа JSON
  • Для ясности используйте константы http.Status*
  • c.AbortWithStatus останавливает цепочку обработчиков
  • Определите единообразную оболочку APIResponse для всех конечных точек

Часто задаваемые вопросы

Урок «Вспомогательные средства ответов и коды состояния» бесплатный?

Да — полный текст урока «Вспомогательные средства ответов и коды состояния» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «Вспомогательные средства ответов и коды состояния»?

c.JSON, c.AbortWithError и ответы с ошибками Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Вспомогательные средства ответов и коды состояния»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Маршрутизатор Gin и группы маршрутов
  2. Привязка и проверка запросов
  3. Вспомогательные средства ответов и коды состояния
  4. Промежуточные обработчики Gin: аутентификация и журналирование
← Назад к Go Academy