我正在尝试设置一条路由来为我的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)作为app.PathPrefix(“/”)参数中的类型http.Handler。处理程序:func()http.Handler不实现http.Handler(缺少ServeHTTP方法)
你的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。
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) {
}
这基本上为您完成了两个步骤。