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 웹 애플리케이션 내 오류를 효과적으로 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!