Узнайте, как использовать метод fetch для извлечения данных из API и отображения их с помощью таблицы HTML.
Начнем!🙂
Интерфейс Fetch API позволяет веб-браузерам отправлять HTTP-запросы на веб-серверы.
Метод fetch() всегда возвращает обещание. Обещание, которое может быть разрешено или отклонено.
Я использую асинхронный режим и жду.
async и await упрощают написание промисов. Ключевые слова async и await позволяют писать асинхронное поведение на основе обещаний в более чистом стиле.
Вот фиктивный API.
'https://dummyjson.com/products'
Итак, давайте напишем для него функцию.
async function displayData(api) { let apiDataResponse = await fetch(api); let data = await apiDataResponse.json(); console.log(data.products[0]) } displayData('https://dummyjson.com/products');
Я создал асинхронную функциюdisplayData.
. Ключевое слово async используется до того, как функция возвращает обещание.
Затем я создал переменную с именем apiDataResponse,
Ключевое слово await заставляет JavaScript ждать, пока обещание не установится и не вернет результат.
fetch() принимает 2 аргумента:
- Строка URL или объект запроса.
- Необязательный аргумент, который включает информацию о запросе, который вы хотите сделать к базе данных или API.
Асинхронная функция приостанавливается до завершения ответа. Когда ответ завершен, переменной apiDataResponse
присваивается объект ответа запроса.
Теперь объект apiDataResponse
содержит несколько форматов данных.
apiDataResponse.json() — это метод, который позволяет извлекать объект JSON из ответа. Метод возвращает обещание, поэтому вам нужно дождаться JSON. await apiDataResponse.json();
Теперь переменная data
содержит массив продуктов.
Вы можете легко проверить это с помощью консоли.
Итак, логическая часть выполнена. Нам просто нужно немного изменить асинхронную функцию для отображения данных.
async function displayData(api) { let tbody = document.getElementById('myTable'); let rows = ''; let apiDataResponse = await fetch(api); let data = await apiDataResponse.json(); //console.log(data.products[0]) let prod = data.products; for (let i = 0; i < prod.length; i++) { rows += `<tr><td><img src="${prod[i].thumbnail}" width="200px" height="150px" alt="img"/></td> <td>${prod[i].title}</td> <td>${prod[i].brand}</td> <td>${prod[i].category}</td> <td>${prod[i].description}</td> <td>${prod[i].price}</td></tr>` } tbody.innerHTML = rows; } displayData('https://dummyjson.com/products');
HTML-часть:
<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>JavaScript</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"> </head> <body> <div class="container mt-3"> <h2>Products Table</h2> <br> <table class="table table-bordered"> <thead> <tr> <th>Thumbnail</th> <th>Product Title</th> <th>Brand</th> <th>Description</th> <th>Category</th> <th>Price</th> </tr> </thead> <tbody id="myTable"> </tbody> </table> </div> </body> <script type="text/javascript" src="JS/myScript.js"> </script> </html>
Вот окончательный результат.
Поздравляю! Вы дошли до конца этого поста. Надеюсь, вы хорошо понимаете концепцию.
Следите за новостями!
Далее я создам функцию поиска для таблицы этого продукта.
Увидимся в следующем посте, а пока продолжайте учиться и продолжать исследовать!