Gin 学习之响应处理

时间:2022-07-23
本文章向大家介绍Gin 学习之响应处理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

01

String

c.String() 第一个参数是code,第二个参数是格式化字符串,第三个开始的若干参数支持任何数据类型。

示例代码:

输出结果:

用户名:frank

02

JSON

Gin 使用 encoding/json 作为默认的 json 包,可以序列化 map 类型的对象。

示例代码:

输出结果:

{"age":18,"email":"frank@gmail.com","name":"frank"}

gin.H 是 map[string]interface{} 的一种快捷方式。

示例代码:

输出结果:

{"age":19,"email":"bob@gmail.com","name":"bob"}

还可以序列化 struct 类型的对象,并且可以使用 tag 标签修改响应结果的字段名。

示例代码:

输出结果:

{"name":"lucy","Email":"lucy@gmail.com","Age":17}

03

JSONP

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

示例代码:

输出结果:

curl -X GET http://localhost:8081/user3?callback=ab
abc({"age":16,"email":"lily@gmail.com","name":"lily"});

04

PureJSON

通常,JSON 使用 unicode 替换特殊 HTML 字符,例如 < 变为 u003c。如果要按字面对这些字符进行编码,则可以使用 PureJSON。Go 1.6 及更低版本无法使用此功能。

示例代码:

输出结果:

{"html":"<b>hello</b>"}

05

SecureJSON

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

你也可以使用自己的 SecureJSON 前缀,r.SecureJsonPrefix(")]}',n")

示例代码:

输出结果:

while(1);["a","b","c"]

06

AsciiJSON

使用 AsciiJSON 生成具有转义的非 ASCII 字符的 ASCII-only JSON。

示例代码:

输出结果:

{"age":20,"email":"zs@gmail.com","name":"u5f20u4e09"}

07

XML

XML 格式

示例代码:

输出结果:

<map>
<email>apple@gmail.com</email>
<name>apple</name>
</map>

08

YAML

YAML 格式

示例代码: