使用clojure和日志结果从api获取数据

使用clojure和日志结果从api获取数据,clojure,Clojure,我是clojure的新手,熟悉java和PHP。我已经分配了新的clojure任务来从外部API获取数据并进行一些处理 这是我的API请求,我使用curl命令进行了尝试 curl-i-X POST-H“内容类型:应用程序/json”-d“{\'uid\':\'uid\',\'param\':\'1\'”http://localhost:8081/api/getData 结果是-{“comp”:true,“yUi”:“78.2555”,“xUi”:“4.5233”,“id”:“10”} 我已经使用

我是clojure的新手,熟悉java和PHP。我已经分配了新的clojure任务来从外部API获取数据并进行一些处理

这是我的API请求,我使用curl命令进行了尝试
curl-i-X POST-H“内容类型:应用程序/json”-d“{\'uid\':\'uid\',\'param\':\'1\'”http://localhost:8081/api/getData

结果是-{“comp”:true,“yUi”:“78.2555”,“xUi”:“4.5233”,“id”:“10”}

我已经使用clojure应用了上述过程,我需要记录这些返回值。您能帮我使用clojure吗

我就是这样尝试的

(defn- get-data
  "api call"
  [uId]
  (try
    (log/info (trs "start process: {0}" (str "uid" uId )))
    (when-let [ui (client/post "http://localhost:8081/api/getData" {:form-params {:uid uId,:param "1"} :content-type :json })]
      (log/info (trs "get data: {0} {1} {2} {3}" (:comp ui) (:yUi ui) (:xUi ui) (:id ui))))
    (catch Throwable e
      (log/error "api call failed:" (.getMessage e)))))

问题是什么?请添加您的问题陈述。乍一看,我想,使用表单数据而不是json主体会有问题吗?了解您使用的是哪个HTTP客户端库会很有帮助,我们无法仅从名称空间别名
client
进行猜测。代码中使用的
client/post
似乎与给定的
curl
命令完全不匹配。curl命令使用application/JSON内容类型头以JSON格式发送数据。目前尚不清楚post使用的是什么http客户端,但通常使用form params会导致与curl不同的、可能不正确的数据编码方法和内容类型。查看客户端库的文档,了解向API发送数据的咒语,该咒语将提供一个模板,用于发送带有正确标题的JSON。假设您使用的是
clj http
,则可能会将整个响应正文作为单个字符串。您可以尝试使用
:as JSON
:as Clojure
将响应强制为JSON或Clojure数据结构,如下所示: