Проблема с PokeAPI, не удается получить данные - PullRequest
0 голосов
/ 14 июля 2020

Итак, я пытаюсь использовать PokeAPI в образовательных целях, и я запускаю это:

const express = require('express')
const https = require('https')
const app = express()
const port = 3000

app.get('/', function(req,res){
    const url = 'https://pokeapi.co/api/v2/berry'
                //no uses el mismo nombre de argumentos
    https.get(url, function(resp) {
        resp.on('data', function(data){
            let datos = JSON.parse(data)
            console.log(datos)
        })
    })
    res.send('lol')
})



app.listen(port, () => console.log(`Example app listening on ${port} port!`))

И в консоли я получил это:

undefined:1
{"count":64,"next":"https://pokeapi.co/api/v2/berry?offset=20&limit=20","previous":null,"results":[{"name":"cheri","url":"https://pokeapi.co/api/v2/berry/1/"},{"name":"chesto","url":"https://pokeapi.co/api/v2/berry/2/"},{"name":"pecha","url":"https://pokeapi.co/api/v2/berry/3/"},{"name":"rawst","url":"https://pokeapi.co/api/v2/berry/4/"},{"name":"aspear","url":"https://pokea




SyntaxError: Unexpected end of JSON input
    at JSON.parse (<anonymous>)
    at IncomingMessage.<anonymous> (C:\UdemyWeb\PokeProject\app.js:11:30)
    at IncomingMessage.emit (events.js:311:20)
    at IncomingMessage.Readable.read (_stream_readable.js:512:10)
    at flow (_stream_readable.js:989:34)
    at resume_ (_stream_readable.js:970:3)
    at processTicksAndRejections (internal/process/task_queues.js:84:21)

Я все спрашивал inte rnet, я даже спросил об их слабости и не получил ответов, я думаю, что это способ получения данных из API, но я хочу знать, почему именно с этим API, а не с другими, я пробовал с weatherAPI и D&D API и никаких проблем. Спасибо.

1 Ответ

1 голос
/ 14 июля 2020

Готов поспорить, проблема возникает и с другими API. Возможно, другие ответы были слишком маленькими, поэтому все они пришли с первым портом. Я бы порекомендовал использовать некоторую http библиотеку, например ax ios. Если вы хотите обрабатывать фрагменты самостоятельно, вам нужно агрегировать все данные и прослушивать конечное событие.

let data = '';
resp.on('data', function(chunk) {
    data += chunk;
});

resp.on('end', function() {
    console.log(JSON.parse(data));
});

Еще одно полезное чтение, которое я бы порекомендовал вам: 5 способов сделать HTTP Запросы в Node.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...