1
0
mirror of https://github.com/labstack/echo.git synced 2025-12-07 23:12:43 +02:00
Signed-off-by: Vishal Rana <vr@labstack.com>
This commit is contained in:
Vishal Rana
2015-05-18 11:33:11 -07:00
parent 73fa05f826
commit aa5e552282
8 changed files with 27 additions and 34 deletions

View File

@@ -90,15 +90,9 @@ func main() {
// Echo instance // Echo instance
e := echo.New() e := echo.New()
//------------
// Middleware // Middleware
//------------
// Recover
e.Use(mw.Recover())
// Logger
e.Use(mw.Logger()) e.Use(mw.Logger())
e.Use(mw.Recover())
// Routes // Routes
e.Get("/", hello) e.Get("/", hello)

29
echo.go
View File

@@ -22,6 +22,7 @@ type (
prefix string prefix string
middleware []MiddlewareFunc middleware []MiddlewareFunc
maxParam byte maxParam byte
notFoundHandler HandlerFunc
httpErrorHandler HTTPErrorHandler httpErrorHandler HTTPErrorHandler
binder BindFunc binder BindFunc
renderer Renderer renderer Renderer
@@ -134,13 +135,16 @@ func New() (e *Echo) {
//---------- //----------
e.MaxParam(5) e.MaxParam(5)
e.notFoundHandler = func(c *Context) *HTTPError {
return &HTTPError{Code: http.StatusNotFound}
}
e.HTTPErrorHandler(func(he *HTTPError, c *Context) { e.HTTPErrorHandler(func(he *HTTPError, c *Context) {
if he.Code == 0 { if he.Code == 0 {
he.Code = http.StatusInternalServerError he.Code = http.StatusInternalServerError
} }
if he.Message == "" { if he.Message == "" {
he.Message = http.StatusText(he.Code) he.Message = http.StatusText(he.Code)
if e.debug { if e.debug && he.Error != nil {
he.Message = he.Error.Error() he.Message = he.Error.Error()
} }
} }
@@ -321,18 +325,19 @@ func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request) {
} }
c.reset(w, r, e) c.reset(w, r, e)
if h == nil { if h == nil {
c.Error(&HTTPError{Code: http.StatusNotFound}) h = e.notFoundHandler
} else {
// Chain middleware with handler in the end
for i := len(e.middleware) - 1; i >= 0; i-- {
h = e.middleware[i](h)
}
// Execute chain
if he := h(c); he != nil {
e.httpErrorHandler(he, c)
}
} }
// Chain middleware with handler in the end
for i := len(e.middleware) - 1; i >= 0; i-- {
h = e.middleware[i](h)
}
// Execute chain
if he := h(c); he != nil {
e.httpErrorHandler(he, c)
}
e.pool.Put(c) e.pool.Put(c)
} }

View File

@@ -61,8 +61,8 @@ func main() {
e := echo.New() e := echo.New()
// Middleware // Middleware
e.Use(mw.Recover())
e.Use(mw.Logger()) e.Use(mw.Logger())
e.Use(mw.Recover())
// Routes // Routes
e.Post("/users", createUser) e.Post("/users", createUser)

View File

@@ -16,15 +16,9 @@ func main() {
// Echo instance // Echo instance
e := echo.New() e := echo.New()
//------------
// Middleware // Middleware
//------------
// Recover
e.Use(mw.Recover())
// Logger
e.Use(mw.Logger()) e.Use(mw.Logger())
e.Use(mw.Recover())
// Routes // Routes
e.Get("/", hello) e.Get("/", hello)

View File

@@ -23,12 +23,12 @@ func main() {
// Middleware // Middleware
//------------ //------------
// Recover
e.Use(mw.Recover())
// Logger // Logger
e.Use(mw.Logger()) e.Use(mw.Logger())
// Recover
e.Use(mw.Recover())
// Basic auth // Basic auth
e.Use(mw.BasicAuth(func(u, p string) bool { e.Use(mw.BasicAuth(func(u, p string) bool {
if u == "joe" && p == "secret" { if u == "joe" && p == "secret" {

View File

@@ -65,8 +65,8 @@ func main() {
e := echo.New() e := echo.New()
// Middleware // Middleware
e.Use(mw.Recover())
e.Use(mw.Logger()) e.Use(mw.Logger())
e.Use(mw.Recover())
//------------------------ //------------------------
// Third-party middleware // Third-party middleware

View File

@@ -310,9 +310,8 @@ func (r *router) ServeHTTP(w http.ResponseWriter, req *http.Request) {
h, _ := r.Find(req.Method, req.URL.Path, c) h, _ := r.Find(req.Method, req.URL.Path, c)
c.reset(w, req, r.echo) c.reset(w, req, r.echo)
if h == nil { if h == nil {
c.Error(&HTTPError{Code: http.StatusNotFound}) h = r.echo.notFoundHandler
} else {
h(c)
} }
h(c)
r.echo.pool.Put(c) r.echo.pool.Put(c)
} }

View File

@@ -67,6 +67,7 @@ func main() {
// Middleware // Middleware
e.Use(mw.Logger()) e.Use(mw.Logger())
e.Use(mw.Recover())
// Routes // Routes
e.Get("/", hello) e.Get("/", hello)