Как получить значение запроса, в котором есть пробел

Имею url по типу ../upload?tag=..

Нужно получить значение тега Что есть сейчас:

route.HandleFunc("/upload", Handler.Upload).Methods(http.MethodPost)

И далее в функции вытаскиваю тег так:

tag := r.URL.Query().Get("tag")

Работает только в том случае, если передается тег без пробела. Как можно решить проблему?

Весь код с ошибкой: main:

func NewServer(settings *config.Settings) *Server {
    return &Server{
        settings: settings,
    }
}

type Server struct {
    server   *http.Server
    settings *config.Settings
}

func (s *Server) StartServer() {
    mux := NewMux()
    route := mux.StartRouter()

    s.server = &http.Server{
        Addr:    fmt.Sprintf(":%d", s.settings.Port),
        Handler: route,
    }

    go s.server.ListenAndServe()
    fmt.Printf("HTTP server started on %d\n", s.settings.Port)
}

func (s *Server) StopServer() {
    s.server.Close()
    fmt.Printf("HTTP server stopped\n")
}

mux:

func NewMux() *Mux {
    return &Mux{
    }
}

type Mux struct {
}

func (m *Mux) StartRouter() *mux.Router {
    route := mux.NewRouter()
    handler := handlers.NewHandler()
    route.HandleFunc("/upload", handler.Upload).Methods(http.MethodPost)
    return route
}

handler:

type Handler struct {
}

func NewHandler() *Handler {
    return &Handler{
    }
}

func (h *Handler) Upload(w http.ResponseWriter, r *http.Request) {
    tag := r.URL.Query().Get("tag")
    if tag != "" {

    }
}

Если тэг без пробела - ок, если с пробелом - 500 (Например ошибка при такой ссылке: ../upload?tag=f%20f


Ответы (0 шт):