Пытаюсь сделать отдачу статики и встраивание ее в бинарник с помощью go. В качестве роутера использую julienschmidt/httprouter.
|
| - cmd
| | - main.go
|
| - static
| | - build.go
| | - frontend
| | - index.html
| | - favicon.ico
| | - static
| | - css
| | | - main.css
| | - js
| | | -main.js
main.go
import (
frontend "github.com/stasled/myproject/static"
)
func main() {
r := httprouter.New()
front, err := fs.Sub(frontend.Assets, "frontend")
if err != nil {
log.Fatal().Err(err).Msg("failed to load frontend app")
}
fServer := http.StripPrefix("/", http.FileServer(http.FS(front)))
r.Handler("GET", "/", fServer)
r.Handler("GET", "/api", apiMethods)
// другие ручки и запуск сервера
}
build.go
package static
import "embed"
//go:embed frontend
var Assets embed.FS
При запросе:
/ - 200 отдает файл index.html
/index.html - 404
/favicon.ico - 404
/static/css/main.css - 404
/static/js/main.js - 404