我一直在使用gorilla/mux作爲路由器的Go項目。Gorilla mux可選查詢值
我需要能夠具有與路線相關聯的查詢值,但這些值應該是可選的。 這意味着我想在同一處理程序中捕獲/articles/123
和/articles/123?key=456
。
爲了實現這樣我嘗試使用r.Queries
方法接受鍵/值對: router. Path("/articles/{id:[0-9]+}"). Queries("key", "{[0-9]*?}")
但是這使得只有值(456
)可選的,但是不是key
。 因此/articles/123?key=456
和/articles/123?key=
都是有效的,但不是/articles/123
。
編輯:另一個要求是,在註冊路由後,我想以編程方式構建它們,並且我似乎無法弄清楚如何使用r.Queries
,即使文檔明確指出它可能(https://github.com/gorilla/mux#registered-urls) 。
@jmaloney答案的作品,但不允許從名稱建立網址。
一種方法:https://stackoverflow.com/questions/43379942/how-to-have-an-optional-query-in-get-request-using-gorilla-mux – smarx
@smarx我見過這個問題,但有兩個原因爲什麼它不適用於我: 1.它阻止我在我的處理程序中使用'mux.Vars(req)[「tab」]' 2.它不允許我按名稱構建註冊的URL(我已更新了該問題) – stassinari