我是靠谱客的博主 尊敬香菇,最近开发中收集的这篇文章主要介绍gin - 数据返回格式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

gin框架封装了常用的数据格式方法响应于客户端
string
func main(){
	r := gin.Default()
	r.GET("/ping",func(c *gin.Context){
		c.String(http.StatusOK,"pong")
	})
	r.Run()
}
json
func main(){
  	r := gin.Default()
	r.GET("/user",func(c *gin.Context){
		c.JSON(http.StatusOK,gin.H{
			"nam":"ztind",
			"sex":"man",
			"hoppy":[]interface{}{"music","sports","movie"},
			"info":map[string]interface{}{
				"age":18,
				"weight":"90kg",
				"height":"172cm",
			},
		})
	})
	r.Run()
}
jsonp

Using JSONP to request data from a server in a different domain. Add callback to response body if the query parameter callback exists.

func main(){
	r := gin.Default()
	r.GET("/JSONP?callback=x", func(c *gin.Context) {
			data := map[string]interface{}{
				"foo": "bar",
			}
			//callback is x
			// Will output  :   x({"foo":"bar"})
			c.JSONP(http.StatusOK, data)
	})
	r.Run()
}
AsciiJSON

Using AsciiJSON to Generates ASCII-only JSON with escaped non-ASCII characters.
使用AsciiJSON生成带转义非ASCII字符的纯ASCII JSON。

func main(){
	r := gin.Default()
	r.GET("/someAsciiJSON", func(c *gin.Context) {
		data := map[string]interface{}{
			"lang": "GO语言",
			"tag":  "<br>",
		}
		// will output : {"lang":"GOu8bedu8a00","tag":"u003cbru003e"}
		c.AsciiJSON(http.StatusOK, data)
	})
	r.Run()
}
PureJSON

纯json字符串输出

func main(){
	r := gin.Default()
	// Serves unicode entities
	r.GET("/json", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"html": "<b>Hello, world!</b>",
		})
	})

	// Serves literal characters
	r.GET("/purejson", func(c *gin.Context) {
		c.PureJSON(200, gin.H{
			"html": "<b>Hello, world!</b>",
		})
	})
	r.Run()
}
SecureJSON

使用SecureJSON防止json劫持。如果给定的结构是数组值,则默认值在响应体前面加上“while(1)”。

func main(){
	r := gin.Default()
	// You can also use your own secure json prefix
	//r.SecureJsonPrefix(")]}',n")
	r.GET("/someSecureJSON", func(c *gin.Context) {
		names := []string{"lena", "austin", "foo"}
		// Will output  :   while(1);["lena","austin","foo"]
		c.SecureJSON(http.StatusOK, names)
	})
	r.Run()
}
xml

输出xml格式

func main(){
	r := gin.Default()
	r.GET("/someXML", func(c *gin.Context) {
		c.XML(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
	})
	r.Run()
}
html

见:gin -html rendering

yaml

yaml配置文件

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

ProtoBuf最近几年也算比较流行,它是一种语言无关,平台无关,并且可以扩展,并结构数据序列化的方法。相比JSON/XML这类文本格式的,ProtoBuf是二进制的,更快更高效。以.proto文件进行定义

func main(){
	r := gin.Default()
	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)
	})
	r.Run()
}

最后

以上就是尊敬香菇为你收集整理的gin - 数据返回格式的全部内容,希望文章能够帮你解决gin - 数据返回格式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部