Compojure route params为空

时间:2012-10-20 16:53:43

标签: clojure compojure

我的Compojure网络应用程序([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始终为空。有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您的示例代码唯一的问题是它在路由正文中缺少响铃哈希映射。该解决方案评估为响应而不是使用println。当您在路由中调用println时,它会打印到标准输出服务器进程的位置,这与API调用的响应无关。

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

这会产生200响应,Params: {"foo" "bar"}作为响应主体。

我用它测试你的PUT路线:

curl -X PUT -d "foo=bar" http://127.0.0.1:8080/something