Gin_响应

Posted yzg-14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gin_响应相关的知识,希望对你有一定的参考价值。

既然请求可以使用不同的content-type,响应也如此。通常响应会有html,text,plain,json和xml等。 gin提供了很优雅的渲染方法。

1. JSON/XML/YAML渲染

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"github.com/gin-gonic/gin/testdata/protoexample"
)

func main() {
	r := gin.Default()

	// gin.H is a shortcut for map[string]interface{}
	r.GET("/someJSON", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
	})

	r.GET("/moreJSON", func(c *gin.Context) {
		// You also can use a struct
		var msg struct {
			Name    string `json:"user"`
			Message string
			Number  int
		}
		msg.Name = "hanru"
		msg.Message = "hey"
		msg.Number = 123
		// 注意 msg.Name 变成了 "user" 字段
		// 以下方式都会输出 :   {"user": "hanru", "Message": "hey", "Number": 123}
		c.JSON(http.StatusOK, msg)
	})

	r.GET("/someXML", func(c *gin.Context) {
		c.XML(http.StatusOK, gin.H{"user":"hanru","message": "hey", "status": http.StatusOK})
	})

	r.GET("/someYAML", func(c *gin.Context) {
		c.YAML(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
	})

	r.GET("/someProtoBuf", func(c *gin.Context) {
		reps := []int64{int64(1), int64(2)}
		label := "test"
		// The specific definition of protobuf is written in the testdata/protoexample file.
		data := &protoexample.Test{
			Label: &label,
			Reps:  reps,
		}
		// Note that data becomes binary data in the response
		// Will output protoexample.Test protobuf serialized data
		c.ProtoBuf(http.StatusOK, data)
	})

	// Listen and serve on 0.0.0.0:8080
	r.Run(":8080")
}

1.1 JSON

技术图片

技术图片

1.2 XML

技术图片

1.3 YAML

技术图片

2. HTML模板渲染

https://www.liwenzhou.com/posts/Go/go_template/

2.1 传结构体

技术图片

技术图片

技术图片

 

2.2 传map

技术图片

 

技术图片

 

2.3 传两个

技术图片

 

技术图片

 

2.4 过滤

技术图片

2.5 if

技术图片

 

2.6 range

技术图片

 

技术图片

 

2.7 with

技术图片

 

2.7 自定义函数

技术图片

 

技术图片

 

2.8 模板嵌套

技术图片

技术图片

技术图片

 

2.9 模板继承

 

以上是关于Gin_响应的主要内容,如果未能解决你的问题,请参考以下文章

Gin-API系列请求和响应参数的检查绑定

Go语言 Gin处理响应

Go语言 Gin处理响应

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

Gin 优雅打印请求与回包内容