Как эффективно парсить query параметры в http запросе на сервере golang
Подскажите, как можно эффективно распарить query параметры, пришедшие на сервер Go в http запросе и записать их к примеру в struct или мапу. Знаю как получать параметры по ключу через метод Get, но проблема в том, что их может приходить произвольное количество, а это уже куча проверок. Можно ли их записать в заготовленную структуру? На сервере не используются апи фреймворки, только маршрутизатор chi.
Ответы (1 шт):
Автор решения: Senior Pomidor
→ Ссылка
прикладываю реальный код.
использовался пакет "github.com/go-playground/form/v4"
func NewMetricsHandler() (*MetricsHandler, error) {
return &MetricsHandler{
formDecoder: form.NewDecoder(),
}, nil
}
type MetricsParams struct {
MachineID []string `form:"machine_id"`
Metrics []string `form:"metrics"`
MetricWindow map[string]string `form:"window"`
From time.Time `form:"from"`
To time.Time `form:"to"`
}
func (handler *MetricsHandler) LastMetrics(w http.ResponseWriter, r *http.Request) {
params := new(MetricsParams)
err := handler.formDecoder.Decode(params, r.URL.Query())
if err != nil {
...
}
...