Я пытаюсь запустить основное веб-приложение, следуя инструкциям, используя Golang и пакет маршрутизации Gorilla / mux.Сервер работает нормально, но он отказывается найти файл index.html независимо от того, что я поместил в браузер, всегда возвращая 404.
Вот код:
main.go
package main
import (
"database/sql"
"fmt"
"net/http"
"github.com/gorilla/mux"
_ "github.com/lib/pq"
)
const (
host = "localhost"
port = 5432
user = "postgres"
password = "0102"
dbname = "bird_encyclopaedia"
)
func newRouter() *mux.Router {
r := mux.NewRouter()
r.HandleFunc("/hello", handler).Methods("GET")
staticFileDirectory := http.Dir("./assets/")
staticFileHandler := http.StripPrefix("/assets/", http.FileServer(staticFileDirectory))
r.PathPrefix("/assets/").Handler(staticFileHandler).Methods("GET")
r.HandleFunc("/bird", getBirdHandler).Methods("GET")
r.HandleFunc("/bird", createBirdHandler).Methods("POST")
return r
}
func main() {
fmt.Println("Starting server dickface...")
connString := fmt.Sprintf("host=%s port=%d user=%s "+
"password=%s dbname=%s sslmode=disable",
host, port, user, password, dbname)
db, err := sql.Open("postgres", connString)
if err != nil {
panic(err)
}
err = db.Ping()
if err != nil {
panic(err)
}
InitStore(&dbStore{db: db})
r := newRouter()
fmt.Println("Serving on port 8080")
http.ListenAndServe(":8080", r)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World!")
}
HTML-файл находится только в каталоге assets / index.html, я могу предоставить его, если это необходимо, но я не вижу проблемы в фактическом html?
Iмного раз просматривали код и не могли понять, почему сервер не сможет найти каталог.Я пробовал localhost / 8080 / assets, localhost / 8080 / assets / index.html, localhost / 8080 и все другие варианты.
Если я добавлю его с / hello mind, он вернет мир Hello, как видно изmain.go И если я добавлю его с / bird, он возвращает «ноль» вместо 404.