如何设置一条服务reactjs app的路线?

时间:2018-04-24 18:08:32

标签: reactjs go gorilla mux

我正在尝试设置一条路线来为我的reactjs应用程序提供服务。

我在公共文件夹中有我的index.html和bundle.js

/public/index.html
/public/bundle.js

我使用go作为我的后端API,并且还为我的reactjs应用程序提供服务。

我为我的应用创建了一个子路由,如:

r := mux.NewRouter()

app := r.Host("app.example.com").Subrouter()

因此,任何以app为子域名的请求都将用于我的Reactjs应用程序。

所以现在我必须为每个请求提供服务,无论我的reactjs应用程序的URL是什么。

路径前缀是我需要的吗?

我试过了:

app.PathPrefix("/").Handler(serveReact)

func serveReact(w http.ResponseWriter, r *http.Request) {
}

但是我收到了这个错误:

  

不能使用serveReact(类型为func()http.Handler)作为http.Handler类型   在app.PathPrefix(" /")的参数中。处理程序:func()http.Handler做   没有实现http.Handler(缺少ServeHTTP方法)

1 个答案:

答案 0 :(得分:2)

您的http处理程序需要ServeHTTP方法。如果您将函数传递给http.HandlerFunc,那么将为您介绍:

app.PathPrefix("/").Handler(http.HandlerFunc(serveReact))

func serveReact(w http.ResponseWriter, r *http.Request) {
}
  

HandlerFunc类型是一个允许将普通函数用作HTTP处理程序的适配器。如果f是具有适当签名的函数,则HandlerFunc(f)是一个调用f。

的Handler

source

type HandlerFunc func(ResponseWriter, *Request)

// ServeHTTP calls f(w, r).
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
    f(w, r)
}

同样,您可以改为使用mux路由器HandlerFunc

app.PathPrefix("/").HandlerFunc(serveReact)

func serveReact(w http.ResponseWriter, r *http.Request) {
}

这基本上只需一步完成两个步骤。