Я использую маршрутизацию Gorilla mux с поддоменом с подстановочными знаками. Однако значение поддомена не заполняется в mux.Vars()
. Вот мой пример программы:
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
)
func indexHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
log.Println(vars)
fmt.Fprintf(w, "hello")
}
func main() {
router := mux.NewRouter()
router.Host("{subdomain}.localhost.com").Path("/{id}").HandlerFunc(indexHandler)
srv := &http.Server{
Handler: router,
Addr: ":8080",
}
log.Fatal(srv.ListenAndServe())
}
Я перехожу к http://sub.localhost.com:8080/123
, и мой файл /etc/hosts
обновлен соответствующим поддоменом. Mux правильно находит этот маршрут при отображении hello
в браузере.
В этом случае я ожидаю, что vars
будет иметь два ключа: subdomain
и id
со значениями sub
и 123
соответственно. Однако, когда я печатаю значение vars
, вот результат:
map[id:123]
Почему отсутствует subdomain
? И как мне получить доступ к этому значению из своего обработчика?