Loc*_*rde 6 post json clojure compojure
编辑 - 如果您有兴趣,源代码在github上.谢谢
关于如何访问已发布到clojure中的url的json数据,我有点困惑; 我似乎无法让它工作.
这是我的路线:
(cc/POST "/add"
request
(str ": " request))
Run Code Online (Sandbox Code Playgroud)
我不完全确定我必须代替什么request
- 我刚看到一些在线博客并试图遵循它,但无法让它工作.
以下是我试图发布的内容:(来自提琴手)
注意:请求标头端口在图像中是不同的; 这是一个错误,我试图弄乱这些数据,看看它是什么,所以请忽略上面图片中的那一部分
在卷曲中,我只是这样做:
curl -X POST -H "Content-Type: application/json" -d '{"foo":"bar","baz":5}'
http://localhost:3005/add
Run Code Online (Sandbox Code Playgroud)
看起来clojure没有收到我发布的json数据.
这是请求var包含的内容:
: {: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 #}
Run Code Online (Sandbox Code Playgroud)
如你所见,一切params
都是空的......
我正在使用compojure和cheshire - 我可以将数据转换为json并返回它们就好了GET
路由..我需要弄清楚如何传递json并将其转换为clojure数据..
谢谢
这是因为:params由一个处理"表单编码"主体的环中间件填充.
您可以使用ring-json将应用程序包装到其他中间件中.它将解析JSON主体并相应地填充:params.(https://github.com/ring-clojure/ring-json)