mirror of
				https://github.com/labstack/echo.git
				synced 2025-10-30 23:57:38 +02:00 
			
		
		
		
	
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							| @@ -3,8 +3,16 @@ Bolt is a fast HTTP router (zero memory allocation) + micro web framework in Go. | |||||||
|  |  | ||||||
| ### Features | ### Features | ||||||
| - Zippy router. | - Zippy router. | ||||||
| - Extensible middleware. | - Extensible middleware / handler, supports: | ||||||
| - Hook any middleware / handler. | 	- Middleware | ||||||
|  | 		- `func(bolt.HandlerFunc) bolt.HandlerFunc` | ||||||
|  | 		- `http.HandlerFunc` | ||||||
|  | 		- `http.Handler` | ||||||
|  | 		- `func(http.Handler) http.Handler` | ||||||
|  | 	- Handler | ||||||
|  | 		- `func(*bolt.Context)` | ||||||
|  | 		- `http.HandlerFunc` | ||||||
|  | 		- `http.Handler` | ||||||
| - Serve static files, including index. | - Serve static files, including index. | ||||||
|  |  | ||||||
| ### Example | ### Example | ||||||
| @@ -27,11 +35,11 @@ type user struct { | |||||||
| 	Name string `json:"name"` | 	Name string `json:"name"` | ||||||
| } | } | ||||||
|  |  | ||||||
| var users map[string]*user | var users map[string]user | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	users = map[string]*user{ | 	users = map[string]user{ | ||||||
| 		"1": &user{ | 		"1": user{ | ||||||
| 			ID:   "1", | 			ID:   "1", | ||||||
| 			Name: "Wreck-It Ralph", | 			Name: "Wreck-It Ralph", | ||||||
| 		}, | 		}, | ||||||
| @@ -41,7 +49,7 @@ func init() { | |||||||
| func createUser(c *bolt.Context) { | func createUser(c *bolt.Context) { | ||||||
| 	u := new(user) | 	u := new(user) | ||||||
| 	if c.Bind(u) { | 	if c.Bind(u) { | ||||||
| 		users[u.ID] = u | 		users[u.ID] = *u | ||||||
| 		c.JSON(http.StatusOK, u) | 		c.JSON(http.StatusOK, u) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										32
									
								
								bolt.go
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								bolt.go
									
									
									
									
									
								
							| @@ -201,29 +201,15 @@ func (b *Bolt) Run(addr string) { | |||||||
| 	log.Fatal(http.ListenAndServe(addr, b)) | 	log.Fatal(http.ListenAndServe(addr, b)) | ||||||
| } | } | ||||||
|  |  | ||||||
| // wraps Handler |  | ||||||
| func (b *Bolt) wrapH(h Handler) HandlerFunc { |  | ||||||
| 	switch h := h.(type) { |  | ||||||
| 	case func(*Context): |  | ||||||
| 		return HandlerFunc(h) |  | ||||||
| 	case http.HandlerFunc: |  | ||||||
| 		return func(c *Context) { |  | ||||||
| 			h.ServeHTTP(c.Response, c.Request) |  | ||||||
| 		} |  | ||||||
| 	default: |  | ||||||
| 		panic("bolt: unknown handler") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // wraps Middleware | // wraps Middleware | ||||||
| func wrapM(m Middleware) MiddlewareFunc { | func wrapM(m Middleware) MiddlewareFunc { | ||||||
| 	switch m := m.(type) { | 	switch m := m.(type) { | ||||||
| 	case func(HandlerFunc) HandlerFunc: | 	case func(HandlerFunc) HandlerFunc: | ||||||
| 		return MiddlewareFunc(m) | 		return MiddlewareFunc(m) | ||||||
| 	case func(http.ResponseWriter, *http.Request): | 	case http.HandlerFunc, func(http.ResponseWriter, *http.Request), http.Handler: | ||||||
| 		return func(h HandlerFunc) HandlerFunc { | 		return func(h HandlerFunc) HandlerFunc { | ||||||
| 			return func(c *Context) { | 			return func(c *Context) { | ||||||
| 				m(c.Response, c.Request) | 				m.(http.Handler).ServeHTTP(c.Response, c.Request) | ||||||
| 				h(c) | 				h(c) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @@ -238,3 +224,17 @@ func wrapM(m Middleware) MiddlewareFunc { | |||||||
| 		panic("bolt: unknown middleware") | 		panic("bolt: unknown middleware") | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // wraps Handler | ||||||
|  | func (b *Bolt) wrapH(h Handler) HandlerFunc { | ||||||
|  | 	switch h := h.(type) { | ||||||
|  | 	case func(*Context): | ||||||
|  | 		return HandlerFunc(h) | ||||||
|  | 	case http.HandlerFunc, func(http.ResponseWriter, *http.Request), http.Handler: | ||||||
|  | 		return func(c *Context) { | ||||||
|  | 			h.(http.Handler).ServeHTTP(c.Response, c.Request) | ||||||
|  | 		} | ||||||
|  | 	default: | ||||||
|  | 		panic("bolt: unknown handler") | ||||||
|  | 	} | ||||||
|  | } | ||||||
|   | |||||||
| @@ -14,11 +14,11 @@ type user struct { | |||||||
| 	Name string `json:"name"` | 	Name string `json:"name"` | ||||||
| } | } | ||||||
|  |  | ||||||
| var users map[string]*user | var users map[string]user | ||||||
|  |  | ||||||
| func init() { | func init() { | ||||||
| 	users = map[string]*user{ | 	users = map[string]user{ | ||||||
| 		"1": &user{ | 		"1": user{ | ||||||
| 			ID:   "1", | 			ID:   "1", | ||||||
| 			Name: "Wreck-It Ralph", | 			Name: "Wreck-It Ralph", | ||||||
| 		}, | 		}, | ||||||
| @@ -28,7 +28,7 @@ func init() { | |||||||
| func createUser(c *bolt.Context) { | func createUser(c *bolt.Context) { | ||||||
| 	u := new(user) | 	u := new(user) | ||||||
| 	if c.Bind(u) { | 	if c.Bind(u) { | ||||||
| 		users[u.ID] = u | 		users[u.ID] = *u | ||||||
| 		c.JSON(http.StatusOK, u) | 		c.JSON(http.StatusOK, u) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user