0

URL 内の限られた文字列リストに応答するパスを処理するために、Gorilla mux ルーターを使用しようとしています。私が開発しているサービスは、呼び出し元からファイルを取得し、URL で指定された「アダプター」に応じて、S3 または OneDrive に送信する「アダプター」を介してそれらを渡します。また、"schema" という名前の変数も必要です。私のテストは次のとおりです({schema}は「テスト」に設定されます):

router.HandleFunc("/{adapter:(s3|onedrive)}/{schema:[a-z]+}/check",
func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte(fmt.Sprintf(`{"a":"%s","s":"%s"}`,
        mux.Vars(r)["adapter"], mux.Vars(r)["schema"])))
}).Methods("GET")

私は、行き先が譲歩するのと同じように、行き先も譲歩することを期待してい/s3/test/checkます...しかし、これらの場合、私はそれぞれ得ています。{"a":"s3","s":"test"}/onedrive/test/check{"a":"onedrive","s":"test"}{"a":"s3","s":"s3"}{"a":"onedrive","s":"onedrive"}

(s3|onedrive)たとえば、正しくアクセスしようとすると/dropbox/test/check404 が返されるため、チェックが強制されているようです。

{schema}変数が変数の値を取得するのはなぜ{adapter}ですか?どうすれば修正できますか?

4

1 に答える 1