全书目录

第三十二篇:Gin 完全指南 —— 高速交警中枢宇宙

第十一章:Gin 不只会发 JSON —— 它还能发各种“执法回执”

1 分钟 239 字 第 602 / 962 个阅读单元

很多人把 Gin 误解成“只会写 REST API”。

不是。

Gin 内建就支持多种渲染方式。

#1. JSON / XML / YAML / ProtoBuf 等回执
go
r.GET("/ticket/json", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{
        "id":     "T-1001",
        "status": "open",
    })
})

r.GET("/ticket/xml", func(c *gin.Context) {
    c.XML(http.StatusOK, gin.H{
        "id":     "T-1001",
        "status": "open",
    })
})
#2. HTML 页面也能直接发
go
r.LoadHTMLGlob("templates/*")

r.GET("/dashboard", func(c *gin.Context) {
    c.HTML(http.StatusOK, "index.tmpl", gin.H{
        "title": "高速交警值班看板",
    })
})

这意味着 Gin 不是只能做“纯 API 中枢”,它也能做:

  • 管理后台
  • 传统服务端渲染页面
  • 混合型 Web 应用
#3. 静态文件也能挂
go
r.Static("/assets", "./assets")
r.StaticFile("/favicon.ico", "./assets/favicon.ico")
#4. 安全一点的 JSON 回执

如果你担心某些老旧场景下的 JSON hijacking,可以用:

go
c.SecureJSON(http.StatusOK, gin.H{
    "data": []string{"A-17", "A-18"},
})

所以从“回执能力”上看,Gin 更像:

text
高速交警中枢
├── JSON 处罚单
├── XML 协议回执
├── HTML 看板页面
├── 静态资源公告栏
└── 文件与数据流输出