При использовании fetch как преобразовать тело ответа из приложения / x-nd json в приложение / json? - PullRequest
0 голосов
/ 11 марта 2020

Я пробую Lichess API. Я пытаюсь экспортировать игры пользователя. Согласно документации я могу получить либо PGN, либо nd json в качестве ответа.

Сейчас это не работает:

const api_url = "https://lichess.org/api/games/user/Terinieks?max=5&since=1578607200000&perfType=bullet"

async function getData() {
   let response = await fetch(api_url, {
      headers: {
         "Accept": "application/x-ndjson"
      }
   });
   let data = await response.json();
}
getData()

Я изо всех сил пытаюсь найдите, как заставить await response.json() работать.

Поскольку, насколько я понимаю, мне теперь нужно каким-то образом преобразовать мой ответ (в nd json) в json, но как?

Обновление 1

Я пытаюсь использовать NPM пакет 'can-nd json -stream' , который был предложен из статьи: Потоковые данные с помощью Fetch () и ND JSON

В приложении. js У меня import ndjsonStream from "can-ndjson-stream";, но я получаю ошибку:

module "c:/Users/Juris/Desktop/Chess Stats/node_modules/can-ndjson-stream/can-ndjson-stream"

Could not find a declaration file for module 'can-ndjson-stream'.
'c:/Users/Juris/Desktop/Chess Stats/node_modules/can-ndjson-stream/
can-ndjson-stream.js' implicitly has an 'any' type.

  Try npm install @types/can-ndjson-stream if it exists 
or add a new declaration (.d.ts) file containing
declare module 'can-ndjson-stream';ts(7016)

И в Chrome эта ошибка:

Uncaught TypeError: Failed to resolve module specifier "can-ndjson-stream". Relative references must start with either "/", "./", or "../".

index. html имеет <script type="module" src="JS/app.js"></script>

Не уверен, как правильно настроить оператор импорта.

1 Ответ

0 голосов
/ 11 марта 2020

Поскольку nd json на самом деле представляет собой набор JSON строк, поэтому, разделенные \n символами, вы сможете получить результаты, изменив эту строку:

let data = await response.json();

до:

let data = (await response.text()).match(/.+/g).map(JSON.parse);

Примечание: /.+/g соответствует непустым строкам.

...