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

第33章 文本请求处理

第33章 文本请求

学习如何在 Iris 中处理文本请求体。

基础文本处理

```go package main

import "github.com/kataras/iris/v12"

func main() { app := iris.New()

app.Post("/text", func(ctx iris.Context) { body := ctx.GetBody() text := string(body)

ctx.JSON(iris.Map{ "received": text, "length": len(text), }) })

app.Listen(":8080") } ```

限制大小读取

```go app.Post("/limited", iris.LimitRequestBodySize(1<<20), func(ctx iris.Context) { body, err := ctx.GetBody() if err != nil { ctx.StopWithError(iris.StatusBadRequest, err) return }

ctx.JSON(iris.Map{ "text": string(body), "size": len(body), }) }) ```

流式读取文本

```go app.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{ "content": string(content), "size": len(content), }) }) ```

最佳实践

校验 - 检查内容类型 - 验证编码 - 设置大小限制 - 处理空请求体 - 清理输入内容

性能 - 使用合适的缓冲区 - 处理大文本 - 监控内存占用 - 实现超时机制 - 及时释放资源

安全 - 校验输入 - 设置大小限制 - 检查编码 - 监控使用情况 - 处理错误

实现 - 处理编码 - 设置超时 - 在文档中说明限制 - 测试边界情况 - 记录问题日志

评论 (0)