作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 Echo 框架。
如何将此格式响应更改为我自己的格式它来自 JWT 库的错误 https://github.com/dgrijalva/jwt-go
{
"message": "invalid or expired jwt"
}
我想改变这样的东西
{
"meta": {
"status": false,
"message": "Unauthorized",
"messages": null
},
"result": null
}
我找不到如何覆盖 DefaultHTTPErrorHandler
这个自定义的HttpErrorHandler
e := echo.New()
e.HTTPErrorHandler = func(err error, c echo.Context) {
var (
code = http.StatusInternalServerError
msg interface{}
)
type (
Map map[string]interface{}
)
if he, ok := err.(*echo.HTTPError); ok {
code = he.Code
msg = he.Message
if he.Internal != nil {
err = fmt.Errorf("%v, %v", err, he.Internal)
}
} else if e.Debug {
msg = err.Error()
} else {
msg = http.StatusText(code)
}
if _, ok := msg.(string); ok {
msg = Map{"sempak": msg}
}
// Send response
if !c.Response().Committed {
if c.Request().Method == http.MethodHead {
err = c.NoContent(code)
} else {
err = c.JSON(code, msg)
}
if err != nil {
e.Logger.Error(err)
}
}
}
最佳答案
首先,您需要从 JWT 库中捕获错误。 Here您可以找到一个示例 (ExampleParse_errorChecking
) 如何执行此操作。
当您知道错误时,您可以返回您的自定义响应或使用自定义 HTTP 错误处理程序查看详情 here
Custom HTTP error handler can be set via e.HTTPErrorHandler
func customHTTPErrorHandler(err error, c echo.Context) {
// ...
}
e.HTTPErrorHandler = customHTTPErrorHandler
关于go - 如何覆盖 DefaultHTTPErrorHandler 格式消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55513157/
我正在使用 Echo 框架。 如何将此格式响应更改为我自己的格式它来自 JWT 库的错误 https://github.com/dgrijalva/jwt-go { "message": "inv
我是一名优秀的程序员,十分优秀!