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

问题描述 投票:-1回答:1

我正在尝试设置一条路由来为我的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方法)

reactjs go gorilla mux
1个回答
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) {
}

这基本上为您完成了两个步骤。

© www.soinside.com 2019 - 2024. All rights reserved.