我是一名新手Gopher,正在尝试创建一个Go后端来为我的AngularJS前端提供服务,并提供API。
以下是我目前的进展。
package main
import (
"github.com/gorilla/mux"
"log"
"net/http"
)
func main() {
rtr := mux.NewRouter()
srtr := rtr.PathPrefix("/api").Subrouter()
srtr.HandleFunc("/hello", hello).Methods("GET")
rtr.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/")))
http.Handle("/", rtr)
log.Println("Listening...")
http.ListenAndServe(":3000", nil)
}
func hello(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello World"))
}
一切运作良好。
/api/hello
返回 "Hello World",如果我访问 /
,它将提供我的 index.html
。然而,由于我正在尝试使用angular ui-router,因此我需要我的go服务器将所有未注册的路由发送到angular,以便angular ui-router可以处理它们。例如:如果我现在去
/random
,它会返回404,因为我在 ./static
下没有名为random的文件。但我想让Go将该请求转发到Angular,以便ui-router可以处理 /random
。
/
或类似的路径(即http.Redirect(w, r, "/", 302)
)。 - elithrar