Редактировать : чтобы упростить тестирование в Firefox, я отключил кеширование .. в противном случае мне пришлось бы вручную очищать кеш для получения точных результатов. У меня не было такой же проблемы при использовании Chrome, хотя.
Имейте в виду, я новичок в Go но эта проблема сводила меня с ума ... Я испытывал то же поведение, что и вы (очевидно) ..
Казалось бы, Go / http требователен к форматированию шаблонов ..
Я возился с этим около часа и, наконец, смог получить рабочий пример, используя следующий код:
// Working Code
package main
import "net/http"
func main() {
root := http.NewServeMux()
api := http.NewServeMux()
api.HandleFunc("/ping", myHandlerFunc)
root.Handle("/api/", http.StripPrefix("/api", api))
http.ListenAndServe(":8080", root)
}
func myHandlerFunc(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("pong\n"))
}
Я пробовал столько разных конфигураций, сколько вы можете себе представить (до /
косые черты коснулись), и приведенный выше код был единственным способом заставить его работать ..
В частности, ссылаясь на:
// Leading forward slash on /ping
api.HandleFunc("/ping", myHandlerFunc)
// The first /api/ is surrounded in forward slashes,
// the second /api only contains a leading forward slash
root.Handle("/api/", http.StripPrefix("/api", api))
Изменение кода вызывает 404-е .. .
// DOES NOT WORK!!
package main
import "net/http"
func main() {
root := http.NewServeMux()
api := http.NewServeMux()
api.HandleFunc("/ping", myHandlerFunc)
root.Handle("/api", http.StripPrefix("/api", api))
http.ListenAndServe(":8080", root)
}
func myHandlerFunc(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("pong\n"))
}
Надеюсь, это поможет! Приветствия