Gorilla Mux для обработки завитков

Я хочу использовать Gorilla Mux для обработки запросов API.

Команды будут примерно такими:

curl http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello

И я работаю со следующими обработчиками:

router.Methods("GET").Path("/api/myapiname/{version}").HandlerFunc(apihandler)

func apihandler(rw http.ResponseWriter, q *http.Request) {
    vars := mux.Vars(q)
    log.Println(vars["version"])
    log.Println(q.FormValue("number"))
    log.Println(q.FormValue("target"))
    log.Println(q.FormValue("message"))
}

Но для curl запросы я получаю только значение формы number не target а также message"s

Как правильно обрабатывать запросы API, используя Gorilla mux? Нужна ли дополнительная маршрутизация?

Я просто хочу получить любой http запрос формы http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello и быть в состоянии сопоставить его ключ к значению

Спасибо!

1 ответ

Решение

Вы можете попытаться добавить запросы к вашему маршрутизатору, в этом случае у вас будут все переменные на одной карте.

router.Methods("GET").Path("/api/myapiname/{version}").Queries("number", "{number:[0-9]+}", "target", "{target:[^&]+}", "message", "{message:[^&]+}").HandlerFunc(apihandler)

func apihandler(rw http.ResponseWriter, q *http.Request) {
    vars := mux.Vars(q)
    log.Println(vars["version"])
    log.Println(vars("number"))
    log.Println(vars("target"))
    log.Println(vars("message"))
}
Другие вопросы по тегам