İşleme (Rendering)
Gin, JSON, XML, YAML, ProtoBuf, HTML ve daha fazlası dahil olmak üzere birden fazla formatta yanıt işlemeyi destekler. Her işleme metodu aynı kalıbı izler: *gin.Context üzerinde bir HTTP durum kodu ve serileştirilecek veri ile bir metod çağırın. Gin, content-type başlıklarını, serileştirmeyi ve yanıt yazmayı otomatik olarak işler.
// 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-protobufAynı veriden tek bir işleyicide birden fazla formatta sunmak için Accept başlığını veya bir sorgu parametresini kullanabilirsiniz:
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")}Bu bölümde
- XML/JSON/YAML/ProtoBuf işleme — Otomatik content-type işleme ile birden fazla formatta yanıt işleme
- SecureJSON — Eski tarayıcılarda JSON ele geçirme saldırılarını önleme
- JSONP — CORS olmadan eski istemcilerden çapraz alan isteklerini destekleme
- AsciiJSON — Güvenli aktarım için ASCII olmayan karakterleri kaçışlama
- PureJSON — HTML karakterlerini kaçışlamadan JSON işleme
- Statik dosya sunma — Statik varlık dizinlerini sunma
- Dosyadan veri sunma — Tek tek dosyaları, ekleri ve indirmeleri sunma
- Reader’dan veri sunma — Herhangi bir
io.Reader’dan yanıta veri akışı - HTML işleme — Dinamik veri ile HTML şablonlarını işleme
- Çoklu şablon — Tek bir uygulamada birden fazla şablon seti kullanma
- Şablonlu tekli ikili oluşturma — Şablonları derlenmiş ikili dosyanıza gömme