Gin Error Handling Middleware is a middleware for the popular Gin framework that enables you to configure error handling centrally as a convention within your Go application, as opposed to explicitly handling exceptions within each handler or controller action.
This gives the following benefits:
- Centralised location for handling errors
- Reduce boilerplate 'error to response' mappings in your request handlers/controller actions
- Helps protect yourself from inadvertently revealing errors to API consumers
var (
NotFoundError = fmt.Errorf("resource could not be found")
)
func main() {
r := gin.Default()
r.Use(
ErrorHandler(
Map(NotFoundError).ToStatusCode(http.StatusNotFound),
))
r.GET("/ping", func(c *gin.Context) {
c.Error(NotFoundError)
})
r.Run()
}
Returns the following HTTP response:
HTTP/1.1 404 Not Found
Date: Wed, 16 Feb 2022 04:08:50 GMT
Content-Length: 0
Connection: close
var (
NotFoundError = fmt.Errorf("resource could not be found")
)
func main() {
r := gin.Default()
r.Use(
ErrorHandler(
Map(NotFoundError).ToResponse(func(c *gin.Context, err error) {
c.Status(http.StatusNotFound)
c.Writer.Write([]byte(err.Error())),
}),
))
r.GET("/ping", func(c *gin.Context) {
c.Error(NotFoundError)
})
r.Run()
}
Returns the following response:
HTTP/1.1 404 Not Found
Date: Wed, 16 Feb 2022 04:21:37 GMT
Content-Length: 27
Content-Type: text/plain; charset=utf-8
Connection: close
resource could not be found