gopherjs 是把 go 转换为 js 的工具,echo 是 go 的 web 框架。
echo 官网: https://echo.labstack.com
使用 gopherjs serve
在 localhost:8080 开启服务,然后运行下面的 go
代码,它使用 echo 框架在 localhost:1323 开启服务,里面的逻辑是把非 /api 路径的请求都反向代理到 gopherjs 在 8080 端口提供的服务,只有路径为 /api 的请求,跳过代理,由自己处理。这样可以实现在同一个端口(同一个域)下提供 api 接口和 js 等静态文件,而不需要让服务器允许 api 接口的跨域访问。
package main
import (
"net/http"
"net/url"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
)
func main() {
e := echo.New()
// middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.Use(middleware.Gzip())
e.GET("/api", func(c echo.Context) error {
return c.String(http.StatusOK, "hello world!\n")
})
url1, err := url.Parse("http://localhost:8080")
if err != nil {
e.Logger.Fatal(err)
}
targets := []*middleware.ProxyTarget{
{
URL: url1,
},
}
proxyMid := middleware.ProxyWithConfig(middleware.ProxyConfig{
Balancer: middleware.NewRandomBalancer(targets),
Skipper: func(c echo.Context) bool {
if c.Path() == "/api" {
return true
}
return false
},
})
e.Use(proxyMid)
e.Logger.Fatal(e.Start(":1323"))
}
来源:oschina
链接:https://my.oschina.net/u/1248114/blog/3044039