Gin フレームワークを使用して Web アプリケーションを構築する場合、各ルート内でエラーを処理するのが一般的ですハンドラ。これは、特に複数の HTTP エラーを処理する場合に、面倒で冗長なアプローチにつながる可能性があります。 Gin は、エラー処理ミドルウェアの使用を通じて、より洗練されたソリューションを提供します。
各ルートでエラーを明示的に処理する代わりに、エラーをインターセプトして提供するミドルウェアを作成できます。それらを一元的に処理する方法。ミドルウェア関数には次の手順が含まれている必要があります:
<code class="go">func ErrorHandler(c *gin.Context) { // Proceed to the next handler in the chain c.Next() // Iterate over the errors that occurred during the request handling for _, err := range c.Errors { // Log the error or perform any other necessary operations logger.Error("whoops", ...) // Send an HTTP response with the appropriate status (or -1 to omit overwriting) c.JSON(-1, /* error payload */) } }</code>
ミドルウェアは Use メソッドを使用してルーターに追加されます:
<code class="go">router := gin.New() router.Use(middleware.ErrorHandler)</code>
エラーを手動で処理する代わりに、ルート ハンドラー内で、適切な HTTP ステータスでリクエストを中止できます。
<code class="go">func (h *Handler) List(c *gin.Context) { movies, err := h.service.ListService() if err != nil { c.AbortWithError(http.StatusInternalServerError, err) return } c.JSON(http.StatusOK, movies) }</code>
ミドルウェアでは、gin.Error タイプの Err フィールドにアクセスして元のエラーを検査できます。 :
<code class="go">for _, err := range c.Errors { switch err.Err { case ErrNotFound: c.JSON(-1, gin.H{"error": ErrNotFound.Error()}) } // etc... }</code>
ミドルウェアを使用する利点は、リクエスト処理中に複数のエラーを蓄積できることです。さらに、ユーザー ID、リクエスト URL などのコンテキスト情報をエラーに追加できます。この情報は、より詳細なログ記録やエラー レポートに使用できます。
Gin でミドルウェア ベースのエラー処理を利用することで、エラー処理を一元化して簡素化し、コードの可読性を向上させ、コードの読みやすさを向上させることができます。エラーログ機能。このアプローチはより慣用的であり、カスタム エラーを処理し、リクエストのライフサイクル中に複数のエラーを蓄積する柔軟性を提供します。
以上がJin ミドルウェアのエラーを処理する方法: 集中アプローチ?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。