GIN Error Handler
pkg/response/response.go
package response
import "github.com/gin-gonic/gin"
type ReponseData struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data"`
}
func SuccessResponse(c *gin.Context, code int, data interface{}) {
c.JSON(code, ReponseData{
Code: code,
Message: msg[code],
Data: data,
})
}
func ErrorResponse(c *gin.Context, code int, message string) {
c.JSON(code, ReponseData{
Code: code,
Message: msg[code],
Data: nil,
})
}
pkg/response/httpStatusCode.go
package response
const (
ErrCodeSuccess = 200
ErrCodeNotFound = 404
ErrCodeBadRequest = 400
ErrCodeUnauthorized = 401
ErrCodeForbidden = 403
ErrCodeConflict = 409
ErrCodeInternalServerError = 500
ErrCodeServiceUnavailable = 503
ErrCodeGatewayTimeout = 504
ErrCodeTooManyRequests = 429
ErrCodeNotAcceptable = 406
)
// message
var msg = map[int]string{
ErrCodeSuccess: "Success",
ErrCodeNotFound: "Not Found",
ErrCodeBadRequest: "Bad Request",
ErrCodeUnauthorized: "Unauthorized",
ErrCodeForbidden: "Forbidden",
ErrCodeConflict: "Conflict",
ErrCodeInternalServerError: "Internal Server Error",
ErrCodeServiceUnavailable: "Service Unavailable",
ErrCodeGatewayTimeout: "Gateway Timeout",
ErrCodeTooManyRequests: "Too Many Requests",
ErrCodeNotAcceptable: "Not Acceptable",
}
Controller
package controller
import (
"github.com/TaiTitans/go-ecommerce-backend-api/internal/services"
"github.com/TaiTitans/go-ecommerce-backend-api/pkg/response"
"github.com/gin-gonic/gin"
)
type UserController struct {
userService *services.UserService
}
func NewUserController() *UserController {
return &UserController{
userService: services.NewUserService(),
}
}
// controller -> service -> repo -> model -> database
func (uc *UserController) GetUserByID(c *gin.Context) {
id := c.Param("id")
user, err := uc.userService.GetInforUserService()
if err != nil {
return response.ErrorResponse(c, 400, "Error")
}
return response.SuccessResponse(c, 200, user)
}
Last updated