POSTリクエストからフォームパラメータにアクセスできません。私はミドルウェアと設定オプションのすべての組み合わせを試しましたが、ドキュメントやSOなど(deprecated compojure/handlerオプションを含む)で見たことがありますが、私はまだパラメータを見ることができません。私は非常に明白な何かが欠けていると確信しているので、どんな提案(どれほど軽くても)は非常に高く評価されるでしょう。Compojureでネストされたデフロートを使用するとフォームパラメタにアクセスできません
ここで私のサイトのデフォルトのミドルウェアを使用し、デフォルトで提供される偽造/ CSRF保護を無効にしようとしています。しかし、私が問題のページをWebブラウザで見ようとすると、ブラウザは、それがレンダリングできなかったファイルのようにページをダウンロードしようとします。 (カール使用した場合、予想通り興味深いことに、ページがレンダリングされます。)
がここに最新の試みです:
(defroutes config-routes*
(POST "/config" request post-config-handler))
(def config-routes
(-> #'config-routes*
(basic-authentication/wrap-basic-authentication authenticated?)
(middleware-defaults/wrap-defaults (assoc middleware-defaults/site-defaults :security {:anti-forgery false}))))
が
前の試み:
(def config-routes
(-> #'config-routes*
(basic-authentication/wrap-basic-authentication authenticated?)
middleware-params/wrap-params))
がUPDATE: パラメータが表示されますが飲み込まれますアウターdefroutes
:
(defroutes app-routes
(ANY "*" [] api-routes)
(ANY "*" [] config-routes)
(route/not-found "Not Found"))
それでは、私の質問は次のようになります。どのようにして、ネストされたdefroutes
にパラメータをスレッド化できますか?
私の一時的解決はthis解決策に基づいていますが、Steffen Frank'sははるかに簡単です。私はそれとフォローアップを試みます。
UPDATE 2:
現在の回答の両方が提供する提案を実装しようと、私は新しい問題に実行している:ルートの試合はovereagerです。例えば次のような場合、config-routesのラップ・ベーシック認証ミドルウェアのために/へのPOSTは401応答で失敗します。
(defroutes api-routes*
(POST "/something" request post-somethings-handler))
(def api-routes
(-> #'api-routes*
(middleware-defaults/wrap-defaults middleware-defaults/api-defaults)
middleware-json/wrap-json-params
middleware-json/wrap-json-response))
(defroutes config-routes*
(GET "/config" request get-config-handler)
(POST "/config" request post-config-handler))
(def config-routes
(-> #'config-routes*
(basic-authentication/wrap-basic-authentication authenticated?)
middleware-params/wrap-params))
(defroutes app-routes
config-routes
api-routes
(route/not-found "Not Found"))
(def app app-routes)
ありがとう、これは非常にクリーンなソリューションです。私は[this](http:// stackoverflow。com/a/28017586/382982)がアプローチしていますが、これを試してみましょう。 – pdoherty926
これは動作します...並べ替え。 'api-routes'がリストの最初に来ると、それはリクエストにマッチしている/飲み込んでいます。私のネストされたデフロートのどちらも 'not-found'ハンドラを持っていないので、なぜそれが起こっているのか混乱しています。 – pdoherty926