因此,我尝试将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)我在互联网上到处询问,我甚至问过他们的问题,但没有得到任何回应,我认为这是我从API中获取数据的方式,但我想知道为什么只使用这个API而不是其他API,我尝试了weatherAPI和D&D API,没有任何问题。谢谢。
发布于 2020-07-14 16:19:31
我敢打赌,其他apis也会出现这个问题。可能其他的反应都太小了,所以他们都是带着第一块来的。我建议使用像axios这样的http库。如果你想自己处理数据块,你必须收集所有的数据并监听end事件。
let data = '';
resp.on('data', function(chunk) {
data += chunk;
});
resp.on('end', function() {
console.log(JSON.parse(data));
});我推荐你的另一本好书是5 Ways to Make HTTP Requests in Node.js
https://stackoverflow.com/questions/62890757
复制相似问题