Renderizado
Gin soporta el renderizado de respuestas en múltiples formatos incluyendo JSON, XML, YAML, ProtoBuf, HTML y más. Cada método de renderizado sigue el mismo patrón: llama a un método en *gin.Context con un código de estado HTTP y los datos a serializar. Gin maneja los encabezados de tipo de contenido, la serialización y la escritura de la respuesta automáticamente.
// 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-protobufPuedes usar el encabezado Accept o un parámetro de consulta para servir los mismos datos en múltiples formatos desde un solo 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")}En esta sección
Sección titulada «En esta sección»- Renderizado XML/JSON/YAML/ProtoBuf – Renderizar respuestas en múltiples formatos con manejo automático del tipo de contenido
- SecureJSON – Prevenir ataques de secuestro de JSON en navegadores antiguos
- JSONP – Soportar solicitudes entre dominios desde clientes antiguos sin CORS
- AsciiJSON – Escapar caracteres no ASCII para transporte seguro
- PureJSON – Renderizar JSON sin escapar caracteres HTML
- Servir archivos estáticos – Servir directorios de recursos estáticos
- Servir datos desde archivo – Servir archivos individuales, adjuntos y descargas
- Servir datos desde reader – Transmitir datos desde cualquier
io.Readera la respuesta - Renderizado HTML – Renderizar plantillas HTML con datos dinámicos
- Múltiples plantillas – Usar múltiples conjuntos de plantillas en una sola aplicación
- Incluir plantillas en un solo binario – Incrustar plantillas en tu binario compilado
