登录
首页 >  Golang >  Go问答

设置自定义 DefaultHTTPErrorHandler 样式消息

来源:stackoverflow

时间:2024-03-17 20:57:29 176浏览 收藏

在 Echo 框架中,您可以使用自定义的 DefaultHTTPErrorHandler 来更改默认的错误响应格式。这可以通过将自定义函数分配给 e.HTTPErrorHandler 来实现。该函数将接收错误和上下文作为参数,并返回自定义响应。通过这种方式,您可以创建自己的错误处理逻辑,并以所需的格式呈现错误信息。

问题内容

我正在使用 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

可以通过 e.httperrorhandler 设置自定义 http 错误处理程序

func customHTTPErrorHandler(err error, c echo.Context) {
    // ...
}

e.HTTPErrorHandler = customHTTPErrorHandler

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《设置自定义 DefaultHTTPErrorHandler 样式消息》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>