首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Compojure路由参数为空

Compojure路由参数为空
EN

Stack Overflow用户
提问于 2012-10-21 00:53:43
回答 1查看 1.4K关注 0票数 6

我的Compojure web应用程序(compojure "1.0.1")总是收到一个空的参数映射,尽管添加了wrap-params等。代码示例如下:

代码语言:javascript
复制
(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 (或我的客户端)添加到端点时,我发现params总是空的。有人能帮上忙吗?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-22 01:04:17

您的示例代码的唯一问题是在路由主体中缺少环响应散列映射。该解决方案被评估为环响应,而不是使用println。当您在路由中调用println时,它将打印到运行服务器进程的标准输出,这与对API调用的响应无关。

代码语言:javascript
复制
(defroutes public-routes
  (PUT "/something" {params :params}
    {:status 200
     :body (str "Params: " params)}))

这将生成一个以Params: {"foo" "bar"}作为响应体的200响应。

我正在使用这个来测试您的PUT路由:

代码语言:javascript
复制
curl -X PUT -d "foo=bar" http://127.0.0.1:8080/something
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12990634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档