私はgorilla/muxがルータとして使用されるGoプロジェクトに取り組んできました。Gorilla muxのオプションのクエリ値
ルートに関連付けられたクエリ値を持つことができる必要がありますが、これらの値はオプションでなければなりません。 つまり、同じハンドラで/articles/123
と/articles/123?key=456
の両方をキャッチしたいと考えています。
ので、私は、キー/値のペアを受け入れr.Queries
方法使用してみました達成するために:key
router. Path("/articles/{id:[0-9]+}"). Queries("key", "{[0-9]*?}")
をこれが唯一の値(456
)を行うオプションではなく、。 /articles/123?key=456
と/articles/123?key=
の両方が有効ですが、/articles/123
では無効です。
編集:ルートを登録した後、プログラムでビルドしたいと思っていますが、を使用する方法を考えることができません。ドキュメントには具体的には可能です(https://github.com/gorilla/mux#registered-urls) 。
@jmaloney answerは動作しますが、名前からURLを構築することはできません。
1つのアプローチ:https://stackoverflow.com/questions/43379942/how-to-have-an-optional-query-in-get-request-using-gorilla-mux – smarx
@smarx私はその質問を見ました私にはうまくいかない理由は2つあります: 1.ハンドラで 'mux.Vars(req)[" tab "]'を使用することを妨げます 2.それは私に許可しません登録されたURLを名前でビルドする(質問を更新しました) – stassinari