Как отобразить ответ API в HTML

Хотя я успешно получил данные, мне не удается эффективно отобразить их в формате HTML.

Единственный способ, которым это работает (насколько далеко я продвинулся), — это использовать две конечные точки. Одна конечная точка предназначена для загрузки данных API, а другая конечная точка — для загрузки HTML с помощью сценария.

(С двумя конечными точками я получаю данные, загруженные в HTML, но сначала нужно загрузить первую, а затем вторую, что я считаю не лучшим решением)

Конечные точки:

//rest of the code

app.get("/", async(req, res) => {

    const weatherData = await fetchData();
    
    res.send(weatherData);
    
});

app.get("/test", (req,res) =>{

    res.sendFile(__dirname + "/public/home.html");
});

//rest of the code

Скрипт:


fetch("/")
.then(response => response.json())
.then(weatherData => {
    
    document.getElementById("test").innerHTML = weatherData.resolvedAddress;

    document.getElementById("test1").innerHTML = weatherData.description;

    document.getElementById("test2").innerHTML = weatherData.days[0].temp;

    document.getElementById("test3").innerHTML = weatherData.days[0].tempmax;

    document.getElementById("test4").innerHTML = weatherData.days[0].tempmin;

    document.getElementById("test5").innerHTML = weatherData.days[0].description;

})
.catch(error => console.info(error));

У меня вопрос: есть ли способ объединить две конечные точки (которые данные загружаются в html)?

response.json это не HTML
mplungjan 03.09.2024 11:04

это во многом недостает контекста. Например, как вы хотите отображать данные и как выглядит JSON. Является ли HTML шаблоном или как выглядит его структура. Я настоятельно рекомендую вам не использовать innerHTML, а textContent. Пожалуйста, включите соответствующий HTML-код и пример вашего JSON.

tacoshy 03.09.2024 13:00
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

вы можете использовать механизм шаблонов HTML, чтобы упростить заполнение данных. например EJS или pug.

для эйса:

const express = require('express');
const app = express();

app.set('view engine', 'ejs');

app.get('/', (req, res) => {
    const data = { title: "EJS Example", user: { name: "John" }, items: ["item1", "item2"] };
    res.render('index', data);
});

app.listen(3000);

views/index.ejs:

<h1>Hello, <%= user.name %>!</h1>
<ul>
  <% items.forEach(item => { %>
    <li><%= item %></li>
  <% }); %>
</ul>

Спасибо за ответ! Есть ли способ сделать это без установки каких-либо зависимостей? Я буду исследовать EJS!

harrnui 03.09.2024 11:55

У меня вопрос: есть ли способ объединить две конечные точки (которые данные загружаются в html)?

Для более удобной работы вам следует рассмотреть возможность использования механизма шаблонов, такого как EJS или аналогичной библиотеки, как предложил Арнашиа.

Есть ли способ сделать это без установки каких-либо зависимостей?

Метод, который вы сейчас используете, действительно является правильным подходом, если вы хотите добиться этого без установки каких-либо зависимостей.

Другие вопросы по теме