编辑 - source code is on github如果你有兴趣。谢谢
我对如何访问已发布到 clojure 中的 url 的 json 数据感到有些困惑;我似乎无法让它发挥作用。
这是我的路线:
(cc/POST "/add"
request
(str ": " request))
我不完全确定我必须用什么来代替
request
- 我刚刚在网上看到一些博客并试图关注它,但无法让它工作。这是我尝试发布的方式:(来自 fiddler)
注意:图中请求头端口不同;这是一个错误,我试图弄乱该数据以查看其内容,因此请忽略上图中的那部分
在 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/