+++ title = “Context” url= “/guide/context” [menu.side] name= “Context” parent = “guide” weight = 3

+++

Context

echo.Context 表示当前 HTTP 请求的上下文。通过路径、路径参数、数据、注册处理器和相关 API 进行请求的读取与响应的输出。由于 Context 是一个接口,也可以轻松地使用自定义 API 进行扩展。

扩展 Context

定义一个自定义 context

  1. type CustomContext struct {
  2. echo.Context
  3. }
  4. func (c *CustomContext) Foo() {
  5. println("foo")
  6. }
  7. func (c *CustomContext) Bar() {
  8. println("bar")
  9. }

创建一个中间件来扩展默认的 context

  1. e.Use(func(h echo.HandlerFunc) echo.HandlerFunc {
  2. return func(c echo.Context) error {
  3. cc := &CustomContext{c}
  4. return h(cc)
  5. }
  6. })

此中间件应在任何其他中间件之前注册。

在处理器中使用

  1. e.Get("/", func(c echo.Context) error {
  2. cc := c.(*CustomContext)
  3. cc.Foo()
  4. cc.Bar()
  5. return cc.String(200, "OK")
  6. })