Как получить JSON-файл на стороне сервера
Пытаюсь получить json-файл и распарсить его в объект:
app.get('/', (req, res) => {
res.render('index', {
exchange_rates: {
BTC: JSON.parse('https://blockchain.info/ru/ticker')
}
});
});
и получаю ошибку:
SyntaxError: Unexpected token h in JSON at position 1
Обычно на стороне браузера я делаю AJAX-запрос, но это сервер. Как можно получить доступ к JSON-файлу?
Ответы (1 шт):
Автор решения: Максим Вишневский
→ Ссылка
Проблема в этой строке BTC: JSON.parse('https://blockchain.info/ru/ticker'), вы пытаетесь распарсить не данные с удаленного ресурса, а строку 'https://blockchain.info/ru/ticker', JSON.parse так не умеет, вам нужно предварительно получить данные, например при помощи fetch (в вашем случае node-fetch), примерно так:
// запрашиваем данные при помощи fetch
app.get('/', (req, res) => fetch('https://blockchain.info/ru/ticker')
.then((response) => response.json()) // парсим json
.then((json) => res.render('index', { // отдаем ваш response
exchange_rates: {
BTC: json,
},
})));
Или тоже самое, но при помощи async/await:
app.get('/', async (req, res) => {
const response = await fetch('https://blockchain.info/ru/ticker');
const json = await response.json();
res.render('index', {
exchange_rates: {
BTC: json,
},
});
});