登录
首页 >  Golang >  Go问答

无法在 mux.Vars() 中获得主机参数

来源:stackoverflow

时间:2024-02-16 19:21:24 401浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《无法在 mux.Vars() 中获得主机参数》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

我正在使用带有通配符子域的 gorilla mux 路由。但是,子域值未填充到 mux.vars() 中。这是我的示例程序:

package main

import (
    "fmt"
    "log"
    "net/http"

    "github.com/gorilla/mux"
)

func indexhandler(w http.responsewriter, r *http.request) {
    vars := mux.vars(r)
    log.println(vars)
    fmt.fprintf(w, "hello")
}

func main() {
    router := mux.newrouter()
    router.host("{subdomain}.localhost.com").path("/{id}").handlerfunc(indexhandler)

    srv := &http.server{
        handler: router,
        addr:    ":8080",
    }
    log.fatal(srv.listenandserve())
}

我正在导航到 http://sub.localhost.com:8080/123,并且我已使用此子域相应更新了我的 /etc/hosts 文件。 mux 在浏览器中显示 hello 时正确找到此路由。

在这种情况下,我期望 vars 有两个键:subdomainid,值分别为 sub123。但是,当我打印 vars 的值时,输出如下:

map[id:123]

为什么缺少 subdomain?我如何从我的处理程序访问该值?


解决方案


您的测试 url 格式不正确。您正在使用

http://sub.localhost.com/123:8080

生成的 url 路径为 /123:8080 - 很可能是无效 id。

你想要的是:

http://sub.localhost.com:8080/123

生成与您的路由器匹配的 /123 url 路径。

今天关于《无法在 mux.Vars() 中获得主机参数》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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