24 lines
476 B
Go
24 lines
476 B
Go
package api
|
|
|
|
import (
|
|
"embed"
|
|
"fmt"
|
|
"net/http"
|
|
"path"
|
|
)
|
|
|
|
//go:embed frontend/*
|
|
var Frontend embed.FS
|
|
|
|
func SpaHandler(fs http.FileSystem) http.Handler {
|
|
fileServer := http.FileServer(fs)
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
fmt.Println("/frontend" + r.URL.Path)
|
|
r.URL.Path = "/frontend" + path.Clean(r.URL.Path)
|
|
if _, err := fs.Open(path.Clean(r.URL.Path)); err != nil {
|
|
r.URL.Path = "/"
|
|
}
|
|
fileServer.ServeHTTP(w, r)
|
|
})
|
|
}
|