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

标签 api go go-chi

我正在开发一个 Web 服务应用程序,其端点/加密货币/汇率接受两个货币“符号”作为输入。 Web 服务应在数据库中搜索这些字符之间的货币兑换数据,如果数据库中没有值,或者时间戳值与当前值相差超过 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

最佳答案

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

关于api - 如何从 HTTP 处理程序中的 URL 获取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125612/

相关文章:

go - 如何在 Golang(go-chi) 路由器上同时提供 "/something"和 "/something/"?

go - 如何让 CORS 与 golang chi 服务器一起工作?

php - 如何完成此 Google Calendar Api v3 - FreeBusy PHP - 示例?

javascript - 如何在 AngularJS 中编写基本身份验证以在表中显示来自 API 的 JSON 数据?

c++ - vsnprintf 返回超过给定缓冲区大小的大小

go - 文本/模板问题 Parse() 与 ParseFiles()

dictionary - 如何使用反射反转 map

http - 即使 OPTIONS 返回 HTTP 200,CORS 也不起作用

api - 检测 Google 云端硬盘更改

mongodb - Mongo-go-driver error New client error ClientOptions in argument to mongo.NewClient 错误