成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Gin 框架 JSON 格式返回結果的使用方式

開發 前端
本文我們介紹 Gin 框架為 JSON 提供的幾種易于使用的 API。gin.H? 是 map[string]interface{} 的一種快捷方式。

1.介紹

Gin 框架為 JSON、XML 和 HTML 渲染提供了易用的API。

本文我們主要介紹 JSON 的使用方式。

2.JSON

在 Go 項目開發中,當開發 HTTP API 時,我們通常提供 JSON 格式的返回結果。

Go 框架為 JSON 渲染提供了易用的 API。

普通 JSON

示例代碼:

func main() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  c.JSON(200, gin.H{
   "ping": "pong",
  })
 })
 err := r.Run()
 if err != nil {
  return
 }
}

輸出結果:

curl -s -X GET http://127.0.0.1:8080 | jq
{
  "ping": "pong"
}

閱讀上面這段代碼,我們可以發現,使用 c.JSON() 方法,即可返回 JSON 格式的返回結果。

具有轉義的非 ASCII 字符的 ASCII-only JSON

示例代碼:

func main() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  c.AsciiJSON(200, gin.H{
   "ping": "<b>pong</b>",
  })
 })
 err := r.Run()
 if err != nil {
  return
 }
}

輸出結果:

curl -s -X GET http://127.0.0.1:8080     
{"ping":"\u003cb\u003epong\u003c/b\u003e"}

閱讀上面這段代碼,我們使用 c.AsciiJSON() 方法,生成有轉義的非 ASCII 字符的 ASCII-only JSON。

跨域請求

示例代碼:

func main() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  c.JSONP(200, gin.H{
   "ping": "pong",
  })
 })
 err := r.Run()
 if err != nil {
  return
 }
}

輸出結果:

curl -s -X GET http://127.0.0.1:8080\?callback\=x
x({"ping":"pong"});

閱讀上面這段代碼,我們使用 c.JSONP() 方法,使用 JSONP 向不同域的服務器請求數據。如果查詢參數存在回調,則將回調添加到響應體中。

PureJSON

示例代碼:

func main() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  c.PureJSON(200, gin.H{
   "ping": "<b>pong</b>",
  })
 })
 err := r.Run()
 if err != nil {
  return
 }
}

輸出結果:

curl -s -X GET http://127.0.0.1:8080 | jq
{
  "ping": "<b>pong</b>"
}

閱讀上面這段代碼,我們使用 c.PureJSON() 方法,輸出字面字符。

SecureJSON

示例代碼:

func main() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  names := []string{"lena", "austin", "foo"}
  c.SecureJSON(200, names)
 })
 err := r.Run()
 if err != nil {
  return
 }
}

輸出結果:

curl -s -X GET http://127.0.0.1:8080     
while(1);["lena","austin","foo"]

閱讀上面這段代碼,我們使用 c.SecureJSON() 方法,防止 json 劫持。如果給定的結構是數組值,則默認預置 "while(1)," 到響應體。

我們也可以使用 r.SecureJsonPrefix(")]}',\n") 自定義 SecureJSON 前綴。

3.總結

本文我們介紹 Gin 框架為 JSON 提供的幾種易于使用的 API。

gin.H 是 map[string]interface{} 的一種快捷方式。

返回結果也可以使用一個結構體。

示例代碼:

func main() {
 r := gin.Default()
 r.GET("/", func(c *gin.Context) {
  var msg struct {
   Name    string `json:"user"`
   Message string
   Number  int
  }
  msg.Name = "Lena"
  msg.Message = "hey"
  msg.Number = 123
  c.JSON(http.StatusOK, msg)
 })
 err := r.Run()
 if err != nil {
  return
 }
}

輸出結果:

curl -s -X GET http://127.0.0.1:8080 | jq
{
  "user": "Lena",
  "Message": "hey",
  "Number": 123
}

閱讀上面這段代碼,我們使用一個結構體,輸出 JSON 格式的返回結果。

注意 msg.Name 在 JSON 中變成了 "user",因為我們在結構體中定義的 tag 為 json:"user"。

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2024-11-04 08:16:08

Go語言Web 框架

2024-12-09 00:00:15

Gin框架中間件

2024-02-02 10:40:40

2023-11-28 14:32:04

2024-11-18 09:18:21

Gin框架驗證器

2024-12-16 00:48:39

Gin框架函數

2019-07-22 08:49:37

PythonJSON編程語言

2010-01-07 16:29:33

使用Json

2024-02-06 14:05:00

Go中間件框架

2025-03-31 01:30:00

Gin框架模型

2010-01-06 15:03:34

JSON格式封裝

2010-01-06 13:23:20

JSON數據格式

2010-01-08 09:03:38

返回JSON數據

2024-02-19 07:40:10

2024-03-05 07:55:41

框架GINGo

2024-11-11 00:45:54

Gin框架字段

2024-12-24 10:50:05

GinWeb開發

2022-11-22 11:47:25

JSON格式外置表單

2024-01-30 12:08:31

Go框架停止服務

2021-09-09 10:23:08

GinNetHttp
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产 | 99re在线视频 | 国产美女视频黄a视频免费 国产精品福利视频 | 日韩欧美在线视频播放 | 久在线精品视频 | 欧美一区二区大片 | 暖暖成人免费视频 | 97人人澡人人爽91综合色 | 久久久亚洲 | 99热.com| 亚洲国产精品一区 | 蜜臀网| 成人三级影院 | 91精品国产麻豆 | 久久久国产精品 | 日本福利视频 | 成人动慢 | 天天夜夜操 | 国产精品视频在线播放 | 91精品国产色综合久久不卡98 | 久久久久久久av | 亚洲国产精品一区二区三区 | 精品久久1 | 激情三区| 在线视频一区二区 | 操久久| 欧美在线日韩 | 国产欧美精品一区二区 | 婷婷开心激情综合五月天 | 日韩一区不卡 | 久久精品亚洲 | 毛片在线免费 | 久久久久国色av免费观看性色 | 亚洲伊人久久综合 | 精品91久久 | 天堂亚洲 | 久久精品91久久久久久再现 | 国产一区二区三区在线免费观看 | 成人亚洲精品 | 一级免费毛片 | 在线观看视频一区二区三区 |