1 回答
TA贡献1752条经验 获得超4个赞
BindHeaders未被调用 。源代码:Bind
func (b *DefaultBinder) Bind(i interface{}, c Context) (err error) {
if err := b.BindPathParams(c, i); err != nil {
return err
}
// Issue #1670 - Query params are binded only for GET/DELETE and NOT for usual request with body (POST/PUT/PATCH)
// Reasoning here is that parameters in query and bind destination struct could have UNEXPECTED matches and results due that.
// i.e. is `&id=1&lang=en` from URL same as `{"id":100,"lang":"de"}` request body and which one should have priority when binding.
// This HTTP method check restores pre v4.1.11 behavior and avoids different problems when query is mixed with body
if c.Request().Method == http.MethodGet || c.Request().Method == http.MethodDelete {
if err = b.BindQueryParams(c, i); err != nil {
return err
}
}
return b.BindBody(c, i)
}
您可以通过以下方式获取标头中的值:
func TokenCheck(next echo.HandlerFunc) echo.HandlerFunc {
b := &echo.DefaultBinder{}
return func(c echo.Context) error {
a := new(_getData)
b.BindHeaders(c, a)
fmt.Print(a)
return next(c)
}
}
艺术
token := c.Request().Header.Get("Authorization")
- 1 回答
- 0 关注
- 63 浏览
添加回答
举报