gopherjs 与 echo 配合

gopherjs 是把 go 转换为 js 的工具,echo 是 go 的 web 框架。git

echo 官网: https://echo.labstack.comgithub

使用 gopherjs serve 在 localhost:8080 开启服务,而后运行下面的 go 代码,它使用 echo 框架在 localhost:1323 开启服务,里面的逻辑是把非 /api 路径的请求都反向代理到 gopherjs 在 8080 端口提供的服务,只有路径为 /api 的请求,跳过代理,由本身处理。这样能够实如今同一个端口(同一个域)下提供 api 接口和 js 等静态文件,而不须要让服务器容许 api 接口的跨域访问。web

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"))
}
相关文章
相关标签/搜索