İş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
Bölüm başlığı “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
