العرض
يدعم Gin عرض الاستجابات بتنسيقات متعددة بما في ذلك JSON وXML وYAML وProtoBuf وHTML والمزيد. تتبع جميع طرق العرض نفس النمط: استدعاء طريقة على *gin.Context مع رمز حالة HTTP والبيانات المراد تسلسلها. يتعامل Gin مع ترويسات نوع المحتوى والتسلسل وكتابة الاستجابة تلقائياً.
// 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 أو معامل استعلام لتقديم نفس البيانات بتنسيقات متعددة من معالج واحد:
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 — عرض الاستجابات بتنسيقات متعددة مع معالجة تلقائية لنوع المحتوى
- SecureJSON — منع هجمات اختطاف JSON في المتصفحات القديمة
- JSONP — دعم الطلبات عبر النطاقات من العملاء القدامى بدون CORS
- AsciiJSON — ترميز الأحرف غير ASCII للنقل الآمن
- PureJSON — عرض JSON بدون ترميز أحرف HTML
- تقديم الملفات الثابتة — تقديم مجلدات الأصول الثابتة
- تقديم البيانات من ملف — تقديم ملفات فردية ومرفقات وتنزيلات
- تقديم البيانات من قارئ — بث البيانات من أي
io.Readerإلى الاستجابة - عرض HTML — عرض قوالب HTML مع بيانات ديناميكية
- قوالب متعددة — استخدام مجموعات قوالب متعددة في تطبيق واحد
- تضمين القوالب في ملف ثنائي واحد — تضمين القوالب في الملف الثنائي المُترجم