Rendering
Gin mendukung rendering respons dalam berbagai format termasuk JSON, XML, YAML, ProtoBuf, HTML, dan lainnya. Setiap metode rendering mengikuti pola yang sama: panggil metode pada *gin.Context dengan kode status HTTP dan data yang akan diserialisasi. Gin menangani header content-type, serialisasi, dan penulisan respons secara otomatis.
// 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-protobufAnda dapat menggunakan header Accept atau parameter query untuk menyajikan data yang sama dalam berbagai format dari satu 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")}Dalam bagian ini
- Rendering XML/JSON/YAML/ProtoBuf — Render respons dalam berbagai format dengan penanganan content-type otomatis
- SecureJSON — Mencegah serangan JSON hijacking di browser lama
- JSONP — Mendukung permintaan cross-domain dari klien lama tanpa CORS
- AsciiJSON — Meng-escape karakter non-ASCII untuk transportasi yang aman
- PureJSON — Render JSON tanpa meng-escape karakter HTML
- Menyajikan file statis — Menyajikan direktori aset statis
- Menyajikan data dari file — Menyajikan file individual, lampiran, dan unduhan
- Menyajikan data dari reader — Streaming data dari
io.Readerapa pun ke respons - Rendering HTML — Render template HTML dengan data dinamis
- Template ganda — Menggunakan beberapa set template dalam satu aplikasi
- Bind binary tunggal dengan template — Menyematkan template ke dalam binary yang dikompilasi