跳转到内容

方法覆盖

Method Override 中间件会从请求中读取被覆盖的方法,并用它代替原始方法。

所有核心中间件都位于 middleware 包中:

import "github.com/labstack/echo/v5/middleware"
e.Pre(middleware.MethodOverride())
e := echo.New()
e.Pre(middleware.MethodOverrideWithConfig(middleware.MethodOverrideConfig{
Getter: middleware.MethodFromForm("_method"),
}))

方法可以来自 MethodFromHeader、MethodFromForm 或 MethodFromQuery。

MethodOverrideConfig · github.com/labstack/echo/v5@5196b9b

字段说明由英文源码注释生成。

包源码中的字段
字段类型说明源码
Skipper Skipper Skipper defines a function to skip middleware. L16
Getter MethodOverrideGetter Getter is a function that gets overridden method from the request. Optional. Default values MethodFromHeader(echo.HeaderXHTTPMethodOverride). L20
包源码中的函数
类型源码
func MethodOverride() echo.MiddlewareFunc L44
func MethodOverrideWithConfig(config MethodOverrideConfig) echo.MiddlewareFunc L49
DefaultMethodOverrideConfig = MethodOverrideConfig{
Skipper: DefaultSkipper,
Getter: MethodFromHeader(echo.HeaderXHTTPMethodOverride),
}

请在路由和 CSRF 中间件之前通过 Echo#Pre 注册 MethodOverride。POST 不能再改写为 GET、HEAD、OPTIONS、TRACE 或 CONNECT;请求这些方法时仍保持 POST。