#javascript #node.js #api #express #https
#javascript #node.js #API #выразить #https
Вопрос:
Я попытался использовать другой API, и это сработало, однако с этим он не работает.
const express = require("express");
const https = require("https");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.get("/",(req, res)=>{
https.get("https://pixabay.com/api/?key=xxx-zzzamp;q=yellow flowersamp;image_type=photo", (response)=>{
console.log(response.statusCode);
response.on("data",d=>{
const lala = JSON.parse(d);
console.log(lala);
})
})
});
app.listen(3000,()=>{
console.log("Server started on port 3000")
})
Я получил это в консоли
200
не определено: 1
{«total»:28739,»totalHits»:500,»hits»:[{«id»:3063284,»pageURL»:»https://pixabay.com/photos/rose-flower-petal-floral-noble-3063284/»,»type»:»photo»,»tags»:»rose , цветок, лепесток», «Предварительный просмотр»:»https://cdn.pixabay.com/photo/2018/01/05/16/24/rose-3063284_150.jpg»,»previewWidth»:150,»previewHeight»:99,»webformatURL»:»https://pixabaСинтаксическая ошибка: неожиданный конец ввода JSON
в JSON.parse ()
Комментарии:
1. Есть ли еще
console.log()
что-то, что вы не показываете во фрагменте? Откудаundefined:1
берется?2. У вас есть три вывода в консоли, и я могу найти только 2 console.logs. чего-то не хватает. И совет, никогда не делитесь фрагментом кода с конфиденциальной информацией, такой как ключ API. Было бы разумно, если бы вы опустили API из своего фрагмента.
3. @SiradjiAwoual Спасибо за совет. Я не буду делать это снова
Ответ №1:
data
Событие не означает, что запрос завершен. Данные запроса отправляются в пакетах.
Используйте data
событие для сбора всех данных, а затем объедините их в end
событие перед взаимодействием с вашими данными:
const express = require("express");
const https = require("https");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.get("/",(req, res)=>{
https.get("https://pixabay.com/api/?key=xxx-zzzamp;q=yellow flowersamp;image_type=photo", (response)=>{
console.log(response.statusCode);
let chunks = [];
response.on("data",d=>{
chunks.push(d);
});
response.on("end",()=>{
const lala = JSON.parse(Buffer.concat(chunks).toString('utf8'));
console.log(lala);
});
});
});
app.listen(3000,()=>{
console.log("Server started on port 3000");
});