上下文
echo.Context 表示当前 HTTP 请求的上下文。每个处理函数和中间件都会收到它的指针
(*echo.Context),其中包含请求和响应、路径参数、已绑定数据,以及用于构建响应的辅助方法。
func handler(c *echo.Context) error { // ... return nil}id := c.Param("id") // path parameterq := c.QueryParam("q") // query string valueall := c.QueryParams() // url.Values of all query paramsname := c.FormValue("name") // form field (URL + body)ua := c.Request().Header.Get(echo.HeaderUserAgent)也有对应的 *Or 辅助方法,在值不存在时返回默认值,例如
c.ParamOr("id", "0")、c.QueryParamOr("page", "1")、c.FormValueOr(...)。
c.String(http.StatusOK, "plain text")c.JSON(http.StatusOK, payload)c.JSONPretty(http.StatusOK, payload, " ")c.HTML(http.StatusOK, "<b>hi</b>")c.XML(http.StatusOK, payload)c.Blob(http.StatusOK, "application/pdf", bytes)c.Stream(http.StatusOK, "application/octet-stream", reader)c.NoContent(http.StatusNoContent)c.Redirect(http.StatusFound, "/elsewhere")c.File("public/report.pdf") // serve a filec.Attachment("invoice.pdf", "inv.pdf") // prompt downloadc.Inline("photo.png", "photo.png") // render inline每个请求的存储
Section titled “每个请求的存储”使用 Get/Set 在中间件和处理函数之间共享数据:
c.Set("user", u)u, _ := c.Get("user").(*User)也可以通过泛型辅助方法进行带类型访问:
u, err := echo.ContextGet[*User](c, "user")c.Bind() 会把请求数据解析到 struct 中;参见绑定。
var dto CreateUserif err := c.Bind(&dto); err != nil { return echo.ErrBadRequest}