本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

其他数据格式输出

JSON

context.JSON(http.StatusOK,gin.H{
"code":200,
"tag":"<br>",
"msg":"提交成功",
"html":"<b>Hello, world!</b>",
})

结果:{"code":200,"html":"\u003cb\u003eHello, world!\u003c/b\u003e","msg":"提交成功","tag":"\u003cbr\u003e"}

AsciiJSON

生成具有转义的非 ASCII 字符的 ASCII-only JSON

context.AsciiJSON(http.StatusOK,gin.H{
"code":200,
"tag":"<br>",
"msg":"提交成功",
"html":"<b>Hello, world!</b>",
})

结果:{"code":200,"html":"\u003cb\u003eHello, world!\u003c/b\u003e","msg":"\u63d0\u4ea4\u6210\u529f","tag":"\u003cbr\u003e"}

JSONP

使用 JSONP 向不同域的服务器请求数据。如果查询参数存在回调,则将回调添加到响应体中

context.JSONP(http.StatusOK,gin.H{
"code":200,
"tag":"<br>",
"msg":"提交成功",
"html":"<b>Hello, world!</b>",
})

结果:{"code":200,"html":"\u003cb\u003eHello, world!\u003c/b\u003e","msg":"提交成功","tag":"\u003cbr\u003e"}

如果传输的数据在两个不同的域,由于在javascript里无法跨域获取数据,所以一般采取script标签的方式获取数据,传入一些callback来获取最终的数据,这就有可能造成敏感信息被劫持

PureJSON

context.PureJSON(http.StatusOK,gin.H{
"code":200,
"tag":"<br>",
"msg":"提交成功",
})

结果:{"code":200,"html":"<b>Hello, world!</b>","msg":"提交成功","tag":"<br>"}

SecureJSON

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

names := []string{"lena", "austin", "foo"}

// 将输出:while(1);["lena","austin","foo"]
context.SecureJSON(http.StatusOK, names)

json劫持:利用网站的cookie未过期,然后访问了攻击者的虚假页面,那么该页面就可以拿到json形式的用户敏感信息

XML

context.XML(http.StatusOK,gin.H{
"code":200,
"tag":"<br>",
"msg":"提交成功",
"html":"<b>Hello, world!</b>",
})

结果:
<map>
<code>200</code>
<tag><br></tag>
<msg>提交成功</msg>
<html><b>Hello, world!</b></html>
</map>

YAML

context.YAML(http.StatusOK,gin.H{
"code":200,
"tag":"<br>",
"user":gin.H{"name":"zhiliao","age":18},
"html":"<b>Hello, world!</b>",
})

结果:
code: 200
html: <b>Hello, world!</b>
tag: <br>
user:
age: 18
name: zhiliao

ProtoBuf

定义proto文件

user.proto

syntax = 'proto3';

package user;

message User {
string name = 1;
int32 age = 2;
}

messages类型:message,server,enum

导出go文件

protoc --go_out=. user.proto

使用

user_data := &user.User{
Name:"zhiliao",
Age:18,
}
context.ProtoBuf(200,user_data)

注意:是指针

1472人已阅读,今天你学习了吗?

添加新回复
目录