thực hiện thực tế với thư viện stadand
type Adapter func(http.Handler) http.Handler
// Adapt function to enable middlewares on the standard library
func Adapt(h http.Handler, adapters ...Adapter) http.Handler {
for _, adapter := range adapters {
h = adapter(h)
}
return h
}
// Creates a new serve mux
mux := http.NewServeMux()
// Create room for static files serving
mux.Handle("/node_modules/", http.StripPrefix("/node_modules", http.FileServer(http.Dir("./node_modules"))))
mux.Handle("/html/", http.StripPrefix("/html", http.FileServer(http.Dir("./html"))))
mux.Handle("/js/", http.StripPrefix("/js", http.FileServer(http.Dir("./js"))))
mux.Handle("/ts/", http.StripPrefix("/ts", http.FileServer(http.Dir("./ts"))))
mux.Handle("/css/", http.StripPrefix("/css", http.FileServer(http.Dir("./css"))))
// Do your api stuff**
mux.Handle("/api/register", Adapt(api.RegisterHandler(mux),
api.GetMongoConnection(),
api.CheckEmptyUserForm(),
api.EncodeUserJson(),
api.ExpectBody(),
api.ExpectPOST(),
))
mux.HandleFunc("/api/login", api.Login)
mux.HandleFunc("/api/authenticate", api.Authenticate)
// Any other request, we should render our SPA's only html file,
// Allowing angular to do the routing on anything else other then the api
// and the files it needs for itself to work.
// Order here is critical. This html should contain the base tag like
// <base href="/"> *href here should match the HandleFunc path below
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "html/index.html")
})
Một thậm chí có thể bao gồm những tài sản vào nhị phân, sử dụng những thứ như [bindata-assetfs ] (https://github.com/elazarl/go-bindata-assetfs) hoặc [go.rice] (https://github.com/GeertJohan/go.rice). –
Tôi muốn sử dụng golang và angular2 separatly. Máy chủ Golang sẽ chỉ gửi dữ liệu json. Angular sẽ yêu cầu dữ liệu từ máy chủ golang api và render các trang web. Tôi có thể lưu trữ góc cạnh và golang trong một máy chủ không? Ví dụ tôi sẽ có quyền truy cập vào trang web với liên kết http://mywebsite.com và truy cập vào golang api http://api.mywebsite.com – EgorkZe
Tôi không thể thấy bất kỳ lý do nào để không làm điều đó. Chỉ cần cẩn thận để hỗ trợ CORS trong API của bạn. Xem http://restlet.com/blog/2015/12/15/understanding-and-using-cors/ –