Вспомогательные средства ответов и коды состояния
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") // downloadc.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 — локальная установка не требуется.
Все уроки этого курса
- Маршрутизатор Gin и группы маршрутов
- Привязка и проверка запросов
- Вспомогательные средства ответов и коды состояния
- Промежуточные обработчики Gin: аутентификация и журналирование