Gin でのエラー処理の強化
Gin でのカスタム エラー処理には、エラー応答を処理するミドルウェアの使用が含まれます。これにより、エラー ロジックを通常のフロー ロジックから分離できます。
エラー処理ミドルウェア
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()
}
}
}
ハンドラー関数での使用法
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)
}
サーバーのセットアップ
func main() {
router := gin.Default()
router.Use(JSONAppErrorReporter())
router.GET("/hostgroups/:id", fetchSingleHostGroup)
router.Run(":3000")
}
追加リソース
Gin でのエラー処理の詳細については、次のリソースを参照してください:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3