Gorilla Mux路由器仅在被所有查询参数调用时获取具有多个查询参数的URL

Gorilla Mux路由器仅在被所有查询参数调用时获取具有多个查询参数的URL,go,mux,Go,Mux,下面是使用Gorilla Mux路由器时HTTP Get调用的快照: usersAPIs.HandleFunc("/users", middleware.WrapperHandler(th.List)). Queries("email", "{email}"). Queries("order_by", "{order_by}"). Queries("ord

下面是使用Gorilla Mux路由器时HTTP Get调用的快照:

usersAPIs.HandleFunc("/users",
    middleware.WrapperHandler(th.List)).
    Queries("email", "{email}").
    Queries("order_by", "{order_by}").
    Queries("order_type", "{order_type}").
    Queries("page", "{page}").
    Queries("limit", "{limit}").
    Methods("GET")
现在,当使用所有查询参数进行GET调用时,例如

http://localhost:xxxx/accounts/users?email=a&page=1&limit=4&order_by=a&order_type=b 
然后gorilla mux路由器匹配该模式并将其传送给处理程序

但是当使用较少的参数调用like时,例如

http://localhost:xxxx/accounts/users?email=a&page=1
然后它说,例如404未找到意味着资源路径未映射

问题:

#一,。这里遗漏的是Go Gorilla Mux路由器需要所有查询参数吗

#二,。如果GET查询可以包含零个或多个参数,该怎么办?e、 g

http://localhost:xxxx/accounts/users?email=a&page=1 


您误用了,这是为了添加匹配器,它不应该仅仅用于“预先声明”查询变量,然后您可以在方便的时候检索这些变量。匹配器要么匹配,要么不匹配。如果没有,则不会调用处理程序。您应该做的是只为路径和方法注册匹配器,并且只包括处理程序所需的那些查询参数。。。。i、 e.#1是的#2删除该代码段中的每一个
查询
调用。谢谢@mkriva,我会研究它,我的问题是这个版本中的一个:#1,是的,Mux就是这样工作的,#2。在http请求处理程序中:要从RequestURI获取可选参数,我需要执行以下操作:例如,Email:=r.URL.Query().Get(“Email”)
http://localhost:xxxx/accounts/users?page=1