💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
响应记录器是一个 Iris 的特定 `http.ResponseWriter` ,它记录发送的正文, 状态代码和标头,你可以在路由的请求处理程序链中的任何处理程序上进行操作。 1. 在发送数据之前调用 `Context.Record()` 。 2. `Context.Recorder()` 返回一个 [ResponseRecorder](https://godoc.org/github.com/kataras/iris/context#ResponseRecorder). 其方法可用于操纵或检索响应。 `ResponseRecorder` 类型包含标准 Iris 的 ResponseWriter 方法以及以下方法。 Body **返回**记录器记录到目前为止的正文。 请勿用于编辑。 ```Body() []byte``` 用它清除正文。 ```ResetBody()``` 使用 `Write/Writef/WriteString` 进行流写入, 并使用 SetBody/SetBodyString 设置正文。 ``` Write(contents []byte) (int, error) Writef(format string, a ...interface{}) (n int, err error) WriteString(s string) (n int, err error) SetBody(b []byte) SetBodyString(s string) ``` 将标头重置为其原始状态,在 Context.Record 调用之前。 ```ResetHeaders()``` 清除所有标头 ```ClearHeaders()``` Reset 将重置响应主体,标头和状态代码标头。 ```Reset()``` ## 示例 在全局拦截器中记录操作日志。 ``` package main import "github.com/kataras/iris/v12" func main() { app := iris.New() // 开始记录。 app.Use(func(ctx iris.Context) { ctx.Record() ctx.Next() }) // 收集并“记录”。 app.Done(func(ctx iris.Context) { body := ctx.Recorder().Body() // 应该打印成功。 app.Logger().Infof("sent: %s", string(body)) }) } ``` 注册路由... ``` app.Get("/save", func(ctx iris.Context) { ctx.WriteString("success") ctx.Next() // calls the Done middleware(s). }) ``` 或去除在你的主要处理程序中 `ctx.Next` 所需要的, 请修改 Iris 的处理程序[执行规则](https://github.com/kataras/iris/blob/master/_examples/mvc/middleware/without-ctx-next/main.go),如下所示。 ``` // 它适用于每个分组和它的子分组, // 因此, 你可以创建一条路由 := app.Party("/path") // 并设置中间件, 它们的规则以及那里的路由。 app.SetExecutionRules(iris.ExecutionRules{ Done: iris.ExecutionOptions{Force: true}, }) // [路由...] app.Get("/save", func(ctx iris.Context) { ctx.WriteString("success") }) ``` 除此之外, Iris 还为**事务**提供了一个全面的 API 。通过运行[例子](https://github.com/kataras/iris/blob/master/_examples/http_responsewriter/transactions/main.go)进一步了解它。