进阶 www.iris-go.com 2026-10-20 02:39:14 · 19 阅读
第45章 Iris框架内容协商:支持多格式响应与自定义逻辑
内容协商
学习如何在 Iris 中实现内容协商。
基本内容协商
gopackage main
import "github.com/kataras/iris/v12"
type User struct {
Name string `json:"name" xml:"name"`
Age int `json:"age" xml:"age"`
}
func main() {
app := iris.New()
app.Get("/user", func(ctx iris.Context) {
user := User{
Name: "John Doe",
Age: 25,
}
ctx.Negotiation().JSON().XML()
ctx.Negotiate(user)
})
app.Listen(":8080")
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
支持多种格式 goapp.Get("/data", func(ctx iris.Context) { data := iris.Map{ "message": "Hello World", } ctx.Negotiation(). JSON(). XML(). YAML(). MsgPack(). Any("text/plain", func(ctx iris.Context) { ctx.Text("Plain text response") }) ctx.Negotiate(data) })1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
自定义协商逻辑 goapp.Get("/custom", func(ctx iris.Context) { data := getData() ctx.Negotiation(). JSON(func(ctx iris.Context) { ctx.JSON(data) }). XML(func(ctx iris.Context) { ctx.XML(data) }). MsgPack(func(ctx iris.Context) { ctx.MessagePack(data) }) ctx.Negotiate(nil) })1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
最佳实践 实现层面:支持通用格式、处理客户端偏好、设置正确的响应头、记录格式规范以及处理错误。 性能优化:缓存响应、监控使用情况、处理超时机制及优化编码过程。 日常维护:定期清理资源。 头部管理:设置内容类型、处理 Accept 头、配置缓存策略、监控格式支持情况并处理异常。 维护策略:记录格式规范、更新处理逻辑、定期测试、监控变更并复盘性能表现。
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
支持多种格式 goapp.Get("/data", func(ctx iris.Context) { data := iris.Map{ "message": "Hello World", } ctx.Negotiation(). JSON(). XML(). YAML(). MsgPack(). Any("text/plain", func(ctx iris.Context) { ctx.Text("Plain text response") }) ctx.Negotiate(data) })1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
自定义协商逻辑 goapp.Get("/custom", func(ctx iris.Context) { data := getData() ctx.Negotiation(). JSON(func(ctx iris.Context) { ctx.JSON(data) }). XML(func(ctx iris.Context) { ctx.XML(data) }). MsgPack(func(ctx iris.Context) { ctx.MessagePack(data) }) ctx.Negotiate(nil) })1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
最佳实践 实现层面:支持通用格式、处理客户端偏好、设置正确的响应头、记录格式规范以及处理错误。 性能优化:缓存响应、监控使用情况、处理超时机制及优化编码过程。 日常维护:定期清理资源。 头部管理:设置内容类型、处理 Accept 头、配置缓存策略、监控格式支持情况并处理异常。 维护策略:记录格式规范、更新处理逻辑、定期测试、监控变更并复盘性能表现。