Renderização
O Gin suporta renderização de respostas em múltiplos formatos incluindo JSON, XML, YAML, ProtoBuf, HTML e mais. Todo método de renderização segue o mesmo padrão: chame um método no *gin.Context com um código de status HTTP e os dados a serem serializados. O Gin cuida dos headers de content-type, serialização e escrita da resposta automaticamente.
// 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-protobufVocê pode usar o header Accept ou um parâmetro de query para servir os mesmos dados em múltiplos formatos a partir de um único handler:
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")}Nesta seção
- Renderização XML/JSON/YAML/ProtoBuf — Renderize respostas em múltiplos formatos com tratamento automático de content-type
- SecureJSON — Previna ataques de sequestro de JSON em navegadores antigos
- JSONP — Suporte a requisições cross-domain de clientes antigos sem CORS
- AsciiJSON — Escape caracteres não-ASCII para transporte seguro
- PureJSON — Renderize JSON sem escapar caracteres HTML
- Servindo arquivos estáticos — Sirva diretórios de assets estáticos
- Servindo dados de arquivo — Sirva arquivos individuais, anexos e downloads
- Servindo dados de reader — Faça streaming de dados de qualquer
io.Readerpara a resposta - Renderização HTML — Renderize templates HTML com dados dinâmicos
- Múltiplos templates — Use múltiplos conjuntos de templates em uma única aplicação
- Vincular binário único com template — Incorpore templates no seu binário compilado