mirror of
https://github.com/labstack/echo.git
synced 2024-12-22 20:06:21 +02:00
17c8b8f2ea
Signed-off-by: Vishal Rana <vr@labstack.com>
81 lines
1.2 KiB
Go
81 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/labstack/echo"
|
|
"github.com/labstack/echo/middleware"
|
|
)
|
|
|
|
type (
|
|
Host struct {
|
|
Echo *echo.Echo
|
|
}
|
|
)
|
|
|
|
func main() {
|
|
// Hosts
|
|
hosts := make(map[string]*Host)
|
|
|
|
//-----
|
|
// API
|
|
//-----
|
|
|
|
api := echo.New()
|
|
api.Use(middleware.Logger())
|
|
api.Use(middleware.Recover())
|
|
|
|
hosts["api.localhost:1323"] = &Host{api}
|
|
|
|
api.GET("/", func(c echo.Context) error {
|
|
return c.String(http.StatusOK, "API")
|
|
})
|
|
|
|
//------
|
|
// Blog
|
|
//------
|
|
|
|
blog := echo.New()
|
|
blog.Use(middleware.Logger())
|
|
blog.Use(middleware.Recover())
|
|
|
|
hosts["blog.localhost:1323"] = &Host{blog}
|
|
|
|
blog.GET("/", func(c echo.Context) error {
|
|
return c.String(http.StatusOK, "Blog")
|
|
})
|
|
|
|
//---------
|
|
// Website
|
|
//---------
|
|
|
|
site := echo.New()
|
|
site.Use(middleware.Logger())
|
|
site.Use(middleware.Recover())
|
|
|
|
hosts["localhost:1323"] = &Host{site}
|
|
|
|
site.GET("/", func(c echo.Context) error {
|
|
return c.String(http.StatusOK, "Website")
|
|
})
|
|
|
|
// Server
|
|
e := echo.New()
|
|
e.Any("/*", func(c echo.Context) (err error) {
|
|
req := c.Request()
|
|
res := c.Response()
|
|
host := hosts[req.Host]
|
|
|
|
if host == nil {
|
|
err = echo.ErrNotFound
|
|
} else {
|
|
host.Echo.ServeHTTP(res, req)
|
|
}
|
|
|
|
return
|
|
})
|
|
if err := e.Start(":1323"); err != nil {
|
|
e.Logger.Fatal(err)
|
|
}
|
|
}
|