Skip to content

Latest commit

 

History

History
107 lines (74 loc) · 2.4 KB

ResponseRecorder.md

File metadata and controls

107 lines (74 loc) · 2.4 KB

响应记录器(Response recorder)

响应记录器是一个Iris中记录发送体、状态码和消息头的特定的 http.ResponseWriter , 您可以在路由的请求处理程序链的任何处理程序中操作

  1. 在发送数据之前调用 Context.Record()
  2. Context.Record()返回一个响应记录器, 该方法可用于操作或者检索响应

ResponseRecorder 类型包含标准的Iris响应写入器(ResponseWriter)方法及以下方法

Body返回到目前为止追踪到的Body,不要使用它进行编辑

Body() []byte

用这个清理body

ResetBody()

使用 Write/Writef/WriteString 方法进行流写入并且使用 SetBody/SetBodyString 方法来设置body

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()

例子(Example)

在全局拦截器中记录操作日志

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()

        // 应该会打印"success".
        app.Logger().Infof("sent: %s", string(body))
    })
}

注册路由

app.Get("/save", func(ctx iris.Context) {
    ctx.WriteString("success")
    ctx.Next() // 调用已完成的中间件
})

或者在主要信息头中消除依赖 ctx.Next, 可以如下修改Iris的处理程序的执行规则

// 它适用于任何一个Party或者children
// 因此你可以创建一个路由 routes := app.Party("/path")
// 并且设置中间件, 规则和路由
app.SetExecutionRules(iris.ExecutionRules{ 
    Done: iris.ExecutionOptions{Force: true},
})

// [路由...]
app.Get("/save", func(ctx iris.Context) {
    ctx.WriteString("success")
})

除此之外, Iris为事务提供了一个全面的API, 运行实例来了解更多