概述
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 - 数据返回格式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复