进阶 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 头、配置缓存策略、监控格式支持情况并处理异常。 维护策略:记录格式规范、更新处理逻辑、定期测试、监控变更并复盘性能表现。

评论 (0)