رندرینگ
Gin از رندرینگ پاسخها در چندین فرمت از جمله JSON، XML، YAML، ProtoBuf، HTML و موارد دیگر پشتیبانی میکند. هر متد رندرینگ از همان الگو پیروی میکند: فراخوانی یک متد روی *gin.Context با یک کد وضعیت HTTP و دادهها برای سریالسازی. Gin هدرهای content-type، سریالسازی و نوشتن پاسخ را به طور خودکار مدیریت میکند.
// 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-protobufمیتوانید از هدر Accept یا یک پارامتر پرسوجو برای ارائه همان دادهها در فرمتهای مختلف از یک 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")}در این بخش
- رندرینگ XML/JSON/YAML/ProtoBuf — رندرینگ پاسخها در فرمتهای مختلف با مدیریت خودکار content-type
- SecureJSON — جلوگیری از حملات ربودن JSON در مرورگرهای قدیمی
- JSONP — پشتیبانی از درخواستهای بیندامنهای از کلاینتهای قدیمی بدون CORS
- AsciiJSON — فرار از کاراکترهای غیر ASCII برای انتقال امن
- PureJSON — رندرینگ JSON بدون فرار از کاراکترهای HTML
- ارائه فایلهای استاتیک — ارائه دایرکتوریهای داراییهای استاتیک
- ارائه داده از فایل — ارائه فایلهای منفرد، پیوستها و دانلودها
- ارائه داده از reader — جریانسازی داده از هر
io.Readerبه پاسخ - رندرینگ HTML — رندرینگ قالبهای HTML با دادههای پویا
- قالبهای متعدد — استفاده از مجموعههای قالب متعدد در یک برنامه
- ترکیب باینری واحد با قالب — جاگذاری قالبها در باینری کامپایل شده