使用 Angular.js 使用 Gorilla Mux 路由

我似乎无法让我的路由正确。我正在使用 Gorilla Mux 并且我正在尝试为我的 angular 应用程序提供服务,所以基本上是我的 index.html,来自任何 url,除了它们以“/foo”开头。


这个有效:


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

  http.ServeFile(w, r, config.dir)

}


func main() {


  fs := http.Dir(config.dir)

  fileHandler := http.FileServer(fs)


  router = mux.NewRouter()


  router.Handle("/foo/page", PublicHandler(handler(getAll)).Methods("GET")

  router.Handle("/foo/page/{id}", PublicHandler(handler(getOne)).Methods("GET")


  router.PathPrefix("/{blaah}/{blaah}/").Handler(fileHandler)

  router.PathPrefix("/").HandlerFunc(StaticFileServer)


  ...

}

但是必须有一种比明确声明每条可能的路由更简单的方法,比如这个 PathPrefix("/{blaah}/{blaah}/") 东西......有了这个,任何其他 url 比 /{blaah}/{blaah }/ 返回未找到的 404 页面,而不是 index.html。


所以我想得到所有的东西(静态文件等),只要它们能被找到,但其他的一切都应该返回/public/index.html。


largeQ
浏览 197回答 2
2回答

阿波罗的战车

我有点晚了,但其他人可能会发现我的回答很有用。基本上 Gorilla Mux 在这里完成你所有的路由。我假设您希望 AngularJS 为任何不以“/foo”开头的 URL 进行路由。您可以使用正则表达式将任何不以“/foo”开头的请求发送到您的 index.html 使用:router.PathPrefix("/{_:.*}").HandlerFunc(StaticFileServer)

撒科打诨

我似乎无法让我的路由正确。我正在使用 Gorilla Mux 并且我正在尝试为我的 angular 应用程序提供服务,所以基本上是我的 index.html,来自任何 url,除了它们以“/foo”开头。这个有效:func StaticFileServer(w http.ResponseWriter, r *http.Request) {  http.ServeFile(w, r, config.dir)}func main() {  fs := http.Dir(config.dir)  fileHandler := http.FileServer(fs)  router = mux.NewRouter()  router.Handle("/foo/page", PublicHandler(handler(getAll)).Methods("GET")  router.Handle("/foo/page/{id}", PublicHandler(handler(getOne)).Methods("GET")  router.PathPrefix("/{blaah}/{blaah}/").Handler(fileHandler)  router.PathPrefix("/").HandlerFunc(StaticFileServer)  ...}但是必须有一种比明确声明每条可能的路由更简单的方法,比如这个 PathPrefix("/{blaah}/{blaah}/") 东西......有了这个,任何其他 url 比 /{blaah}/{blaah }/ 返回未找到的 404 页面,而不是 index.html。所以我想得到所有的东西(静态文件等),只要它们能被找到,但其他的一切都应该返回/public/index.html。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go