为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 gorilla mux 创建带有可选 url var 的路由?

如何使用 gorilla mux 创建带有可选 url var 的路由?

Go
明月笑刀无情 2021-06-10 17:38:49
我想在路由中有一个可选的 URL 变量。我似乎找不到使用 mux 包的方法。这是我目前的路线:func main() {    r := mux.NewRouter()    r.HandleFunc("/view/{id:[0-9]+}", MakeHandler(ViewHandler))    http.Handle("/", r)    http.ListenAndServe(":8080", nil)}当 url 为localhost:8080/view/1. 我希望它接受即使没有id这样如果我输入localhost:8080/view它仍然可以工作。想法?
查看完整描述

2 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您可以HandleFunc为根/view路径定义一个新的:

r.HandleFunc("/view", MakeHandler(RootHandler))

并让该RootHandler函数执行该路径所需的任何操作。


查看完整回答
反对 回复 2021-06-28
?
慕的地10843

TA贡献1785条经验 获得超8个赞

使用您想要的路径再次注册处理程序:


r.HandleFunc("/view", MakeHandler(ViewHandler))

只要确保在获取 vars 时检查这种情况:


vars := mux.Vars(r)

id, ok := vars["id"]

if !ok {

  // directory listing

  return

}

// specific view


查看完整回答
反对 回复 2021-06-28
  • 2 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信