6

私の Compojure Web アプリ ([compojure "1.0.1"]) は、wrap-params などを追加しているにもかかわらず、常に空のパラメーター マップを受け取ります。以下のコード サンプル:

(defroutes public-routes
  (PUT "/something" {params :params}
      (println (str "Params: " params))
      (do-put-something params)))

(def myapp 
  (-> public-routes
      ring-params/wrap-params))

(defn start-server []
  (future (jetty/run-jetty (var myapp) {:port 8080})))

wrap-params、wrap-keyword-params、wrap-multipart-params を追加しようとしましたが、httpie (またはクライアント) を使用してエンドポイントに PUT すると、params が常に空であることがわかりました。誰でも助けることができますか?

ありがとう!

4

1 に答える 1

1

サンプルコードの唯一の問題は、ルート本体にリング応答ハッシュマップがないことです。解決策は、printlnを使用する代わりに、リング応答に評価されます。ルートでprintlnを呼び出すと、サーバープロセスが実行されている場所が標準に出力されます。これは、API呼び出しへの応答とは関係ありません。

(defroutes public-routes
  (PUT "/something" {params :params}
    {:status 200
     :body (str "Params: " params)}))

Params: {"foo" "bar"}これにより、応答本体として200の応答が生成されます。

私はあなたのPUTルートをテストするためにこれを使用しています:

curl -X PUT -d "foo=bar" http://127.0.0.1:8080/something
于 2012-10-21T17:04:17.030 に答える