Как получить основной текст объекта Response, возвращаемого API выборки в ClojureScript? - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь использовать Github Gist API для получения списка всех моих Gists, например, так:

(ns epi.core)

(.then  (.fetch js/window "https://api.github.com/users/seisvelas/gists")
        (fn [data] (.log js/epi data)))

js/epi - это просто console.log, за исключением того, что предоставлено платформой для блогов I 'м (epiphany.pub).

Когда я вызываю этот API из curl, он работает нормально;однако, когда делается в cljs вместо того, чтобы дать мне тело ответа, это дает мне [object Response]. Кто-нибудь знает, как я могу получить основной текст ответа?

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

TL; DR

(-> (.fetch js/window "https://api.github.com/users/seisvelas/gists")
  (.then #(.json %))  ; Get JSON from the Response.body ReadableStream
  (.then #(.log js/epi %))

- это то, что я написал бы


Из ClojureScript, вызова JavaScript, подобного data.body() может быть вызван с помощью

(.body data)

и доступом к свойству JavaScript, например data.body с

(.-body data)

Один из них должен работать в вашем случае. Однако API fetch требует немного больше, если вы хотите получить JSON из тела , что, я полагаю, вы делаете на основе конечной точки.

Если вы имеете дело с цепочками обещаний, вы также можете рассмотреть возможность использования -> (первый поток), чтобы он читался сверху вниз.

См. эту суть для более подробной информации о цепочке обещаний.

0 голосов
/ 02 ноября 2019

Похоже, что .fetch возвращает объект Response, и вам нужно получить атрибут body для него для тела. https://developer.mozilla.org/en-US/docs/Web/API/Response

Что-то вроде (.body data)

...