我正在尝试使用Gist API来获得我所有的要点的列表,如下所示:
(ns epi.core)
(.then (.fetch js/window "https://api.github.com/users/seisvelas/gists")
(fn [data] (.log js/epi data)))
js/epi
只是console.log
,除了我正在使用的博客平台(epiphany.pub)提供的之外。
当我从curl调用那个API时,它工作得很好;但是,如果用cljs完成,而不是给我响应的主体,这就给了我[object Response]
。有人知道我怎样才能得到回复的正文吗?
发布于 2019-11-05 01:09:41
TL;博士
(-> (.fetch js/window "https://api.github.com/users/seisvelas/gists")
(.then #(.json %)) ; Get JSON from the Response.body ReadableStream
(.then #(.log js/epi %))
是我会写的
从ClojureScript中,可以使用
(.body data)
的JavaScript属性访问(如data.body
)。
(.-body data)
其中一个应该适用于你的情况。但是,如果您想要fetch
,则需要更多的从身体上获取JSON,我假设您是基于端点进行的。
如果您正在处理承诺链,您可能还需要考虑使用->
(线程优先),这样它就可以自上而下地读取。
有关线程承诺链的更多信息,请参见这个要旨。
发布于 2021-07-22 08:44:18
有一个包装js fetch API的库,名为lamdaisland.fetch。此库使用transit作为默认编码格式,因此在使用github时需要指定接受格式。
这个库包含kitchen-async.promise
作为它的依赖项,因此您可以在ClojureScript源代码中要求厨房-异步承诺。
(ns fetch.demo.core
(:require [kitchen-async.promise :as p]
[lambdaisland.fetch :as fetch]))
(p/try
(p/let [resp (fetch/get
"https://api.github.com/users/seisvelas/gists"
{:accept :json
:content-type :json})]
(prn (:body resp)))
(p/catch :default e
;; log your exception here
(prn :error e)))
发布于 2019-11-01 21:24:50
.fetch似乎返回了一个响应对象,您需要从其中获取属性body
。https://developer.mozilla.org/en-US/docs/Web/API/Response
有点像(.body data)
https://stackoverflow.com/questions/58665259
复制相似问题