所以我已经使用 Gorilla/Mux 在 Go 中设置了我的 SPA,但我想在不同的路由上运行它,这样我就可以将我的两个 Kubernetes 服务连接在一起(2 个不同的 SPA)。难道我必须将我的 kubernetes 服务更改为 /stock 吗?
我的一个服务在常规路径“/”上运行,我想添加第二个服务,以便当用户输入“https://URL/stock”时,我的第二个 SPA 服务(希望第二个 spa 在 /stock 上运行)
我知道一种方法就是将我的代码和诸如此类的东西合并到我的第一个服务中,但我想知道我是否可以这样做?
main.go
type spaHandler struct {
staticPath string
indexPath string
}
func (h spaHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
path, err := filepath.Abs(r.URL.Path)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
path = filepath.Join(h.staticPath, r.URL.Path)
_, err = os.Stat(path)
if os.IsNotExist(err) {
http.ServeFile(w, r, filepath.Join(h.staticPath, h.indexPath))
return
} else if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
http.FileServer(http.Dir(h.staticPath)).ServeHTTP(w, r)
}
func main() {
router := mux.NewRouter().StrictSlash(true)
//Serve Other Routes Above PathPrefix
router.HandleFunc("/api/findStock", findStock)
spa := spaHandler{staticPath: "./stock/build", indexPath: "index.html"}
router.PathPrefix("/").Handler(spa) <------ any way to serve on /stock???
svr := &http.Server{
Handler: router,
Addr: ":8080",
WriteTimeout: 15 * time.Second,
ReadTimeout: 15 * time.Second,
}
log.Fatal(svr.ListenAndServe())
}
应用程序.js
class App extends Component {
render(){
return (
<Router>
<div>
<section>
<NavBar/>
<Switch>
<Route exact path='/' component={Home}/>
</Switch>
</section>
</div>
</Router>
);
}
}
export default App;
我知道我可以在 App.js 中更改 /stock 的路径,但是当我到达 localhost:8080/ 时,它仍然显示我的导航栏
所以当我去 /stock 端点时,我得到
来自“www.url.com//static/css/2.d9ad5f5c.chunk.css”的资源由于 MIME 类型(“text/plain”)不匹配(X-Content-Type-Options: nosniff)而被阻止
我认为这是因为我的 Stock Service 默认路径在 main.go 中设置为 / 所以它试图从那里提供文件,但在网络上我试图从 /stock 访问它
偶然的你
慕侠2389804
相关分类