json - 在clojure中访问POST json

标签 json post clojure compojure

编辑 - source code is on github如果你有兴趣。谢谢

我对如何访问已发布到 clojure 中的 url 的 json 数据感到有些困惑;我似乎无法让它发挥作用。

这是我的路线:

(cc/POST "/add" 
request
(str ": " request))

我不完全确定我必须用什么来代替 request - 我刚刚在网上看到一些博客并试图关注它,但无法让它工作。

这是我尝试发布的方式:(来自 fiddler)

fiddler posting data

注意:图中请求头端口不同;这是一个错误,我试图弄乱该数据以查看其内容,因此请忽略上图中的那部分

在 curl 中,我只是这样做:
curl -X POST -H "Content-Type: application/json" -d '{"foo":"bar","baz":5}' 
     http://localhost:3005/add

看起来 clojure 根本没有收到我发布的 json 数据。

这是请求变量包含的内容:
: {:scheme :http, :query-params {}, :form-params {}, :request-method :post, 
   :query-string nil, :route-params {}, :content-type "\"application/json\"", 
   :uri "/event", :server-name "localhost", :params {}, 
   :headers {"user-agent" "Fiddler", "content-type" "\"application/json\"", 
          "content-length" "23", "host" "localhost:3005"}, 
   :content-length 23, :server-port 3005, :character-encoding nil, :body #}

如您所见,所有 params空...

我正在使用 compojure 和 cheshire - 我可以将数据转换为 json 并将它们返回给 GET路线..我需要弄清楚如何传递json并将其转换为clojure数据..

谢谢

最佳答案

那是因为 :params 由处理“表单编码”主体的环形中间件填充。

您可以使用 ring-json 将您的应用程序包装到其他中间件中。它将解析 JSON 正文并相应地填充 :params 。 ( https://github.com/ring-clojure/ring-json )

关于json - 在clojure中访问POST json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14708807/

相关文章:

javascript - angularjs中的$http.get读取txt文件但无法读取json文件

ruby-on-rails - Rails 中的 ActiveModel::Serializer - JSON 结果中忽略的序列化程序方法

java - 如何在clojure中获取super调用中的字符串返回值?

javascript - Pastebin.com 帖子

apache - 可以模拟 HTTP 协议(protocol)中的流量控制吗? (原始 HTTP 协议(protocol))

java - 如何匹配 Clojure 中的多行正则表达式来解析 Groovy 源文件?

java - 在 Clojure 中使用 JSoup 解析字符串

python - 如何在不使用 json 库或没有任何其他库的情况下读取 json 文件到字典或列表中?

c# - 执行 ajax 调用并发布 json 时的 ASP.NET Outputcache

asp.net-mvc-3 - html.TextBoxFor 和 html.Textbox,POSTing 值,参数中的模型