进阶 www.iris-go.com 2026-10-20 02:39:14 · 15 阅读

第25章 二进制请求

二进制请求

学习如何在 Iris 中处理二进制请求体。

基础二进制处理

gopackage main import "github.com/kataras/iris/v12" func main() { app := iris.New() app.Post("/binary", func(ctx iris.Context) { data := ctx.GetBody() ctx.JSON(iris.Map{ "size": len(data), "received": true, }) }) app.Listen(":8080") }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
带大小限制的二进制上传

goapp.Post("/upload", iris.LimitRequestBodySize(32<<20), func(ctx iris.Context) { data := ctx.GetBody() // 处理二进制数据 hash := sha256.Sum256(data) ctx.JSON(iris.Map{ "size": len(data), "hash": fmt.Sprintf("%x", hash), }) })

1
2
3
4
5
6
7
8
9
10
11
流式处理二进制数据

goapp.Post("/stream", func(ctx iris.Context) { reader := ctx.Request().Body buffer := make([]byte, 1024) content := []byte{} for { n, err := reader.Read(buffer) if err != nil && err != io.EOF { ctx.StopWithError(iris.StatusInternalServerError, err) return } if n == 0 { break } content = append(content, buffer[:n]...) } ctx.JSON(iris.Map{ "size": len(content), "received": true, }) })

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
最佳实践

  • 校验:检查内容类型、验证大小、处理格式、设置限制、监控使用情况
  • 安全:验证输入、设置大小限制、扫描内容、监控使用、处理错误
  • 性能:使用合适的缓冲区、处理大数据、监控内存、实现超时、清理资源
  • 错误处理:处理 IO 错误、验证内容、记录问题、文档化错误、测试边缘情况

评论 (0)