繁体   English   中英

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

[英]How to get parameters from URL in HTTP handler

我正在使用端点/加密/费率接受两个货币“符号”作为输入的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

您可以通过调用getter r.URL.Query().Get("paramName")从请求中提取查询参数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))
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM