Рендеринг
Gin поддерживает рендеринг ответов в множестве форматов, включая JSON, XML, YAML, ProtoBuf, HTML и другие. Каждый метод рендеринга следует одному и тому же паттерну: вызов метода на *gin.Context с HTTP-кодом статуса и данными для сериализации. Gin автоматически обрабатывает заголовки content-type, сериализацию и запись ответа.
// All rendering methods share this pattern:c.JSON(http.StatusOK, data) // application/jsonc.XML(http.StatusOK, data) // application/xmlc.YAML(http.StatusOK, data) // application/x-yamlc.TOML(http.StatusOK, data) // application/tomlc.ProtoBuf(http.StatusOK, data) // application/x-protobufВы можете использовать заголовок Accept или параметр запроса для обслуживания одних и тех же данных в нескольких форматах из одного обработчика:
package main
import ( "net/http"
"github.com/gin-gonic/gin")
func main() { router := gin.Default()
router.GET("/user", func(c *gin.Context) { user := gin.H{"name": "Lena", "role": "admin"}
switch c.Query("format") { case "xml": c.XML(http.StatusOK, user) case "yaml": c.YAML(http.StatusOK, user) default: c.JSON(http.StatusOK, user) } })
router.Run(":8080")}В этом разделе
- Рендеринг XML/JSON/YAML/ProtoBuf — Рендеринг ответов в нескольких форматах с автоматической обработкой content-type
- SecureJSON — Предотвращение атак перехвата JSON в устаревших браузерах
- JSONP — Поддержка кросс-доменных запросов от устаревших клиентов без CORS
- AsciiJSON — Экранирование не-ASCII символов для безопасной передачи
- PureJSON — Рендеринг JSON без экранирования HTML-символов
- Раздача статических файлов — Раздача директорий со статическими ресурсами
- Раздача данных из файла — Раздача отдельных файлов, вложений и загрузок
- Раздача данных из reader — Потоковая передача данных из любого
io.Readerв ответ - Рендеринг HTML — Рендеринг HTML-шаблонов с динамическими данными
- Множественные шаблоны — Использование нескольких наборов шаблонов в одном приложении
- Встраивание шаблонов в бинарный файл — Встраивание шаблонов в скомпилированный бинарный файл