登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-09 09:30:33 469浏览 收藏

怎么入门Golang编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《如何从 HTTP 处理程序中的 URL 获取参数》,涉及到,有需要的可以收藏一下

问题内容

我正在开发一个 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))
})

理论要掌握,实操不能落!以上关于《如何从 HTTP 处理程序中的 URL 获取参数》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>