Как получить параметры из URL в обработчике HTTP

Я работаю над приложением веб-сервиса с конечной точкой / крипто / тарифами, принимающими в качестве входных данных два "символа" валют. Веб-сервис должен искать данные обмена валют между этими символами в базе данных, и если в базе данных нет значения или значение временной метки отличается от текущего более чем на 1 минуту, отправьте запрос в API сервиса: https://min-api.cryptocompare.com/documentation Итак, я создал структуру и маршрутизатор go-chi. Но я не знаю, как создать работающий обработчик для получения параметров из URL, например: https://min-api.cryptocompare.com/data/price?fsym=BTC&tsyms=USD

package main

import (
    "github.com/go-chi/chi"
    "net/http"
)

type Crypto struct {
    Cur1 string
    Cur2 string
    Rate float64
    Timestamp int64
}
func main() {
    port := ":3000"
    r := chi.NewRouter()
    r.Get("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Connected"))
    })

    http.ListenAndServe(port, r)

Я думаю, что я могу попытаться создать Cur1 для первого значения в теле обработчика:

cur1 = r.FormValue("cur1")

Аналогично для второго значения:

Cur2 = r.FormValue("cur2") 

Окончательный запрос будет: ~/get_rates? Cur1=eth&cur2=btc

1 ответ

Решение

Вы можете извлечь параметры запроса из запроса, вызвав получателя r.URL.Query().Get("paramName")

Извлечение cur1 и cur2 для вашей задачи будет выглядеть примерно так:

r.Get("/get_rates", func(w http.ResponseWriter, r *http.Request) {
        cur1 := r.URL.Query().Get("cur1")
        cur2 := r.URL.Query().Get("cur2")
        w.Write([]byte("cur1=" + cur1 + "; cur2=" + cur2))
})
Другие вопросы по тегам