如何从HTTP处理程序中的URL获取参数

时间:2019-07-20 14:26:34

标签: api go go-chi

我正在使用端点/加密/费率接受两个货币“符号”作为输入的Web服务应用程序。 Web服务应在数据库中的这些字符之间搜索货币兑换数据,并且如果数据库中没有值,或者时间戳值与当前值相差超过1分钟,请向服务API发出请求: https://min-api.cryptocompare.com/documentation 因此,我创建了struct和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 个答案:

答案 0 :(得分:1)

您可以通过调用getter 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))
})