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
Seção intitulada “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
