我正在使用 Liberator,并且很难将我的 POST 数据放入使用关键字作为键的地图中。这是我的资源,有一些用于测试的打印行:
(defresource finish_validation
:allowed-methods [:post]
:available-media-types ["application/json"]
:post! (fn [context]
(let [params (slurp (get-in context [:request :body]))
mapped_params (cheshire/parse-string params)]
(println (type params))
(println (type mapped_params))
(validation/finish mapped_params)))
:handle-created (println ))
为了测试,我使用 curl 发布数据:
curl -H "Content-Type: application/json" -X POST -d '{"email":"test@foo.com","code":"xyz"}' http://localhost:8080/validate
cheshire 将参数转换为地图,但键不是关键字:我得到{email test@foo.com, code xyz}
的是输出,而不是希望的{:email test@foo.com, :code xyz}
。
我应该做一些不同的事情吗?这甚至是获取数据的正确方法吗?