1
0
mirror of https://github.com/labstack/echo.git synced 2025-02-15 13:53:06 +02:00

Updated recipes examples and docs.

Signed-off-by: Vishal Rana <vr@labstack.com>
This commit is contained in:
axdg 2015-07-03 04:14:09 +10:00 committed by Vishal Rana
parent 99aa92eb06
commit 4686f882d6
9 changed files with 91 additions and 31 deletions

21
echo.go
View File

@ -389,7 +389,7 @@ func (e *Echo) URI(h Handler, params ...interface{}) string {
return uri.String() return uri.String()
} }
// URL is an alias for URI. // URL is an alias for `URI` function.
func (e *Echo) URL(h Handler, params ...interface{}) string { func (e *Echo) URL(h Handler, params ...interface{}) string {
return e.URI(h, params...) return e.URI(h, params...)
} }
@ -399,6 +399,7 @@ func (e *Echo) Routes() []Route {
return e.router.routes return e.router.routes
} }
// ServeHTTP implements `http.Handler` interface, which serves HTTP requests.
func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request) { func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request) {
c := e.pool.Get().(*Context) c := e.pool.Get().(*Context)
h, echo := e.router.Find(r.Method, r.URL.Path, c) h, echo := e.router.Find(r.Method, r.URL.Path, c)
@ -423,7 +424,7 @@ func (e *Echo) ServeHTTP(w http.ResponseWriter, r *http.Request) {
e.pool.Put(c) e.pool.Put(c)
} }
// Server returns the internal *http.Server // Server returns the internal *http.Server.
func (e *Echo) Server(addr string) *http.Server { func (e *Echo) Server(addr string) *http.Server {
s := &http.Server{Addr: addr} s := &http.Server{Addr: addr}
s.Handler = e s.Handler = e
@ -446,13 +447,13 @@ func (e *Echo) RunTLS(addr, certFile, keyFile string) {
} }
// RunServer runs a custom server. // RunServer runs a custom server.
func (e *Echo) RunServer(srv *http.Server) { func (e *Echo) RunServer(s *http.Server) {
e.run(srv) e.run(s)
} }
// RunTLSServer runs a custom server with TLS configuration. // RunTLSServer runs a custom server with TLS configuration.
func (e *Echo) RunTLSServer(srv *http.Server, certFile, keyFile string) { func (e *Echo) RunTLSServer(s *http.Server, certFile, keyFile string) {
e.run(srv, certFile, keyFile) e.run(s, certFile, keyFile)
} }
func (e *Echo) run(s *http.Server, files ...string) { func (e *Echo) run(s *http.Server, files ...string) {
@ -489,7 +490,7 @@ func (e *HTTPError) Error() string {
return e.message return e.message
} }
// wraps middleware // wrapMiddleware wraps middleware.
func wrapMiddleware(m Middleware) MiddlewareFunc { func wrapMiddleware(m Middleware) MiddlewareFunc {
switch m := m.(type) { switch m := m.(type) {
case MiddlewareFunc: case MiddlewareFunc:
@ -520,7 +521,7 @@ func wrapMiddleware(m Middleware) MiddlewareFunc {
} }
} }
// Wraps HandlerFunc middleware // wrapHandlerFuncMW wraps HandlerFunc middleware.
func wrapHandlerFuncMW(m HandlerFunc) MiddlewareFunc { func wrapHandlerFuncMW(m HandlerFunc) MiddlewareFunc {
return func(h HandlerFunc) HandlerFunc { return func(h HandlerFunc) HandlerFunc {
return func(c *Context) error { return func(c *Context) error {
@ -532,7 +533,7 @@ func wrapHandlerFuncMW(m HandlerFunc) MiddlewareFunc {
} }
} }
// Wraps http.HandlerFunc middleware // wrapHTTPHandlerFuncMW wraps http.HandlerFunc middleware.
func wrapHTTPHandlerFuncMW(m http.HandlerFunc) MiddlewareFunc { func wrapHTTPHandlerFuncMW(m http.HandlerFunc) MiddlewareFunc {
return func(h HandlerFunc) HandlerFunc { return func(h HandlerFunc) HandlerFunc {
return func(c *Context) error { return func(c *Context) error {
@ -544,7 +545,7 @@ func wrapHTTPHandlerFuncMW(m http.HandlerFunc) MiddlewareFunc {
} }
} }
// wraps handler // wrapHandler wraps handler.
func wrapHandler(h Handler) HandlerFunc { func wrapHandler(h Handler) HandlerFunc {
switch h := h.(type) { switch h := h.(type) {
case HandlerFunc: case HandlerFunc:

View File

@ -7,6 +7,7 @@ import (
"net/http" "net/http"
"github.com/labstack/echo" "github.com/labstack/echo"
mw "github.com/labstack/echo/middleware"
) )
func upload(c *echo.Context) error { func upload(c *echo.Context) error {
@ -45,7 +46,12 @@ func upload(c *echo.Context) error {
func main() { func main() {
e := echo.New() e := echo.New()
e.Index("public/index.html")
e.Use(mw.Logger())
e.Use(mw.Recover())
e.Static("/", "public")
e.Post("/upload", upload) e.Post("/upload", upload)
e.Run(":1323") e.Run(":1323")
} }

View File

@ -4,6 +4,7 @@ import (
"io/ioutil" "io/ioutil"
"github.com/labstack/echo" "github.com/labstack/echo"
mw "github.com/labstack/echo/middleware"
"io" "io"
"net/http" "net/http"
"os" "os"
@ -68,8 +69,12 @@ func upload(c *echo.Context) error {
func main() { func main() {
e := echo.New() e := echo.New()
e.SetDebug(true)
e.Index("public/index.html") e.Use(mw.Logger())
e.Use(mw.Recover())
e.Static("/", "public")
e.Post("/upload", upload) e.Post("/upload", upload)
e.Run(":1323") e.Run(":1323")
} }

View File

@ -40,8 +40,8 @@ func main() {
//------ //------
blog := echo.New() blog := echo.New()
api.Use(mw.Logger()) blog.Use(mw.Logger())
api.Use(mw.Recover()) blog.Use(mw.Recover())
hosts["blog.localhost:1323"] = blog hosts["blog.localhost:1323"] = blog

View File

@ -0,0 +1,33 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>WebSocket</title>
</head>
<body>
<pre>
</pre>
<script>
var loc = window.location;
var uri;
if (loc.protocol === 'https:') {
uri = 'wss:';
} else {
uri = 'ws:';
}
uri += '//' + loc.host;
uri += loc.pathname + 'ws';
ws = new WebSocket(uri)
ws.onopen = function() {
console.log('Connected')
}
ws.onmessage = function(evt) {
console.log('Message')
}
</script>
</body>
</html>

View File

@ -9,10 +9,15 @@ import (
func main() { func main() {
e := echo.New() e := echo.New()
e.Use(mw.Logger()) e.Use(mw.Logger())
e.Use(mw.Recover())
e.Static("/", "public")
e.WebSocket("/ws", func(c *echo.Context) error { e.WebSocket("/ws", func(c *echo.Context) error {
io.Copy(c.Socket(), c.Socket()) io.Copy(c.Socket(), c.Socket())
return nil return nil
}) })
e.Run(":1323") e.Run(":1323")
} }

View File

@ -18,6 +18,7 @@ import (
"net/http" "net/http"
"github.com/labstack/echo" "github.com/labstack/echo"
mw "github.com/labstack/echo/middleware"
) )
func upload(c *echo.Context) error { func upload(c *echo.Context) error {
@ -31,7 +32,7 @@ func upload(c *echo.Context) error {
// Read files // Read files
files := req.MultipartForm.File["files"] files := req.MultipartForm.File["files"]
for _, f := range(files) { for _, f := range files {
// Source file // Source file
src, err := f.Open() src, err := f.Open()
if err != nil { if err != nil {
@ -56,11 +57,15 @@ func upload(c *echo.Context) error {
func main() { func main() {
e := echo.New() e := echo.New()
e.Index("public/index.html")
e.Use(mw.Logger())
e.Use(mw.Recover())
e.Static("/", "public")
e.Post("/upload", upload) e.Post("/upload", upload)
e.Run(":1323") e.Run(":1323")
} }
``` ```
`index.html` `index.html`

View File

@ -12,9 +12,10 @@ import (
"io/ioutil" "io/ioutil"
"github.com/labstack/echo" "github.com/labstack/echo"
mw "github.com/labstack/echo/middleware"
"io" "io"
"os"
"net/http" "net/http"
"os"
) )
func upload(c *echo.Context) error { func upload(c *echo.Context) error {
@ -76,9 +77,13 @@ func upload(c *echo.Context) error {
func main() { func main() {
e := echo.New() e := echo.New()
e.SetDebug(true)
e.Index("../file-upload/public/index.html") e.Use(mw.Logger())
e.Use(mw.Recover())
e.Static("/", "public")
e.Post("/upload", upload) e.Post("/upload", upload)
e.Run(":1323") e.Run(":1323")
} }
``` ```

View File

@ -45,8 +45,8 @@ func main() {
//------ //------
blog := echo.New() blog := echo.New()
api.Use(mw.Logger()) blog.Use(mw.Logger())
api.Use(mw.Recover()) blog.Use(mw.Recover())
hosts["blog.localhost:1323"] = blog hosts["blog.localhost:1323"] = blog
@ -54,17 +54,17 @@ func main() {
return c.String(http.StatusOK, "Blog") return c.String(http.StatusOK, "Blog")
}) })
//------ //---------
// Main // Website
//------ //---------
main := echo.New() site := echo.New()
main.Use(mw.Logger()) site.Use(mw.Logger())
main.Use(mw.Recover()) site.Use(mw.Recover())
hosts["localhost:1323"] = main hosts["localhost:1323"] = site
main.Get("/", func(c *echo.Context) error { site.Get("/", func(c *echo.Context) error {
return c.String(http.StatusOK, "Welcome!") return c.String(http.StatusOK, "Welcome!")
}) })