我的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始终为空。有人可以帮忙吗?
谢谢!
答案 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