一个响应记录器是 Iris 特定的 http.ResponseWriter,它记录了发送的响应体,状态码和响应头,你可以在任何这个路由的请求处理器链上的处理器内部操作它。
- 在发送数据前调用 Context.Record
- Context.Recorder()返回一个- ResponseRecorder。它的方法可以用来操作和找回响应。
ResponseRecorder 类型包含了标准的 Iris ResponseWriter 方法和下列的方法。
Body 返回目前为止 Writer 写入的响应体数据。不要使用它来编辑响应体。
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 重置响应头为原始状态。
ResetHeaders()清除所有的头部信息。
ClearHeaders()同时重置响应体,响应头和状态码。
Reset()示例
在一个全局拦截器中记录操作日志。
package main
import "github.com/kataras/iris/v12"
func main() {
    app := iris.New()
    // start record.
    app.Use(func(ctx iris.Context) {
        ctx.Record()
        ctx.Next()
    })
    // collect and "log".
    app.Done(func(ctx iris.Context) {
        body := ctx.Recorder().Body()
        // Should print success.
        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 处理器的执行规则,你可以如下所示:
// It applies per Party and its children,
// therefore, you can create a routes := app.Party("/path")
// and set middlewares, their rules and the routes there as well.
app.SetExecutionRules(iris.ExecutionRules{ 
    Done: iris.ExecutionOptions{Force: true},
})
// [The routes...]
app.Get("/save", func(ctx iris.Context) {
    ctx.WriteString("success")
})文档更新时间: 2020-08-14 10:43   作者:kuteng
