ホームページ >バックエンド開発 >Golang >ミドルウェアのアプローチを使用して、Gin Web アプリケーション内のエラーを効果的に処理するにはどうすればよいですか?

ミドルウェアのアプローチを使用して、Gin Web アプリケーション内のエラーを効果的に処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-01 11:42:29445ブラウズ

How can I effectively handle errors within my Gin web application using a middleware approach?

Gin でのエラー処理の強化

Gin でのカスタム エラー処理には、エラー応答を処理するミドルウェアの使用が含まれます。これにより、エラー ロジックを通常のフロー ロジックから分離できます。

エラー処理ミドルウェア

<code class="go">type appError struct {
    Code    int
    Message string
}

func JSONAppErrorReporter() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Next()
        errors := c.Errors.ByType(gin.ErrorTypeAny)

        if len(errors) > 0 {
            err := errors[0].Err
            var parsedError *appError
            switch err.(type) {
            case *appError:
                parsedError = err.(*appError)
            default:
                parsedError = &appError{
                    Code:    http.StatusInternalServerError,
                    Message: "Internal Server Error",
                }
            }
            // Respond with JSON serialized error
            c.IndentedJSON(parsedError.Code, parsedError)
            c.Abort()
        }
    }
}</code>

ハンドラー関数での使用法

<code class="go">func fetchSingleHostGroup(c *gin.Context) {
    hostgroupID := c.Param("id")

    hostGroupRes, err := getHostGroupResource(hostgroupID)

    if err != nil {
        // Attach error to the context
        c.Error(err)
        return
    }

    // Respond with valid data
    c.JSON(http.StatusOK, *hostGroupRes)
}</code>

サーバーのセットアップ

<code class="go">func main() {
    router := gin.Default()
    router.Use(JSONAppErrorReporter())
    router.GET("/hostgroups/:id", fetchSingleHostGroup)
    router.Run(":3000")
}</code>

追加リソース

Gin でのエラー処理の詳細については、以下を参照してください。次のリソース:

  • [gin-gonic issue #327](https://github.com/gin-gonic/gin/issues/327)
  • [gin-gonic issue #327](https://github.com/gin-gonic/gin/issues/327) #651](https://github.com/gin-gonic/gin/issues/651)
  • [チャープ](https://github.com/go-chi/chi/tree/master/ミドルウェア)
  • [gin-merry](https://github.com/gin-contrib/gin-merry)
  • [gin-frsh-showerrors](https://github. com/frsh/gin-showerrors)

以上がミドルウェアのアプローチを使用して、Gin Web アプリケーション内のエラーを効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。