成人免费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技術棧公眾號

主站蜘蛛池模板: 亚洲国产福利视频 | 精品国产乱码久久久久久影片 | 黄色毛片黄色毛片 | 久久精品国产99国产精品亚洲 | 国产高潮av| av毛片在线免费观看 | 9久久婷婷国产综合精品性色 | 视频在线一区 | 日韩精品1区2区 | 日本aa毛片a级毛片免费观看 | 最新伦理片 | 亚洲一区视频 | 精品国产99 | 波多野结衣中文字幕一区二区三区 | 国产视频久久 | 久久成人综合 | 国产精品久久一区二区三区 | 日韩国产在线 | 国产精品久久久久久久久久软件 | av毛片| 久操av在线 | 国产视频二区 | 亚洲视频在线观看 | 狠狠久久久 | 欧美一区二区三区久久精品视 | 国产精品久久久久久影院8一贰佰 | 91国内产香蕉 | 91成人免费看片 | 欧美在线视频二区 | 99精品99| 一区二区三区免费 | 福利一区视频 | 国产精品99久久久久久动医院 | 久久久久久高潮国产精品视 | 国产97视频在线观看 | 日韩一区二区三区四区五区 | 91精品国产一二三 | 九九久久精品视频 | 国产精品自产拍在线观看蜜 | 羞羞视频在线观看 | 亚洲欧美精品国产一级在线 |