4
我是一個新的Gopher,嘗試做一個Go後端來服務我的Angularjs前端,並且還提供API。Go + Angular ui-router
這是我到目前爲止。
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
返回「你好世界」,如果我去/
它將服務我的index.html
。然而,因爲我正在嘗試使用角度ui路由器,所以我需要我的轉發服務器將所有未註冊的路由發送到有角度的ui路由器可以處理它們。
例如:如果我現在去/random
它將返回一個404,因爲我沒有任何名爲random的./static
下的文件。但我想要的是轉發到Angular的這個請求,所以UI路由器可以處理/random
您可以根據大猩猩/多路複用文檔設置自定義404處理程序:http://www.gorillatoolkit.org/pkg/mux#Router - 在您的情況下,您可能希望將其設置爲指示所有非存在到'/'或類似路徑(即'http.Redi rect(w,r,「/」,302)') – elithrar