Урок 7 · Слайд 1
🍽️

Что такое API?

Меню в ресторане для программ

👨‍💻
Ты (клиент)
Делаешь запрос
↔️
🍕
API (меню)
Отдаёт данные

API (Application Programming Interface) — это набор правил для общения программ между собой. Ты отправляешь запрос → сервер возвращает данные. Как официант в ресторане: ты заказываешь блюдо (запрос), он приносит еду (ответ).

📖 Словарик
API
Интерфейс для общения между программами.
"API погоды возвращает данные по запросу"
Запрос (Request)
Сообщение от клиента к серверу с вопросом или данными.
"Запрос к API: 'дай мне погоду в Москве'"
Ответ (Response)
Данные, которые сервер возвращает в ответ на запрос.
"Ответ API: температура 15°C, пасмурно"
Урок 7 · Слайд 2
📦

JSON: язык данных

Универсальный формат для передачи информации

пример JSON-ответа от API
{
  "город": "Москва",
  "температура": 15,
  "погода": "пасмурно",
  "ветер": {
    "скорость": 5,
    "направление": "северный"
  },
  "прогноз": ["дождь", "снег", "солнце"]
}

// Доступ к данным:
const данные = JSON.parse(ответ);
console.log(данные.температура); // 15
console.log(данные.ветер.скорость); // 5
📖 Словарик
JSON
JavaScript Object Notation — текстовый формат данных.
"Все API используют JSON для передачи данных"
Ключ
Название поля в JSON (всегда строка в кавычках).
"'температура' — ключ, 15 — значение"
Вложенный объект
Объект внутри объекта. Доступ через точку: data.wind.speed.
"данные.ветер.скорость — вложенный доступ"
Урок 7 · Слайд 3
📡

fetch: делаем запрос

Получаем данные из интернета одной функцией

script.js
// fetch возвращает Promise
fetch('https://api.example.com/data')
  .then(response => {
    console.log('Статус:', response.status);
    return response.json(); // парсим JSON
  })
  .then(данные => {
    console.log('Данные:', данные);
  })
  .catch(ошибка => {
    console.error('Ошибка:', ошибка);
  });
📖 Словарик
fetch
Функция JS для выполнения HTTP-запросов.
"fetch('url') отправляет запрос к серверу"
Promise
Обещание результата в будущем (запрос занимает время).
"fetch возвращает Promise — результат придёт позже"
.then() / .catch()
.then — обработка успеха, .catch — обработка ошибки.
".catch перехватывает ошибки сети"
Урок 7 · Слайд 4

async/await: ждём ответ

Современный и читаемый способ работы с API

script.js
// async/await — читается как обычный код
async function загрузитьДанные() {
  const ответ = await fetch('https://api.example.com/data');
  const данные = await ответ.json();
  console.log(данные);
  return данные;
}

загрузитьДанные(); // вызываем

// Стрелочная async функция:
const getData = async () => {
  const res = await fetch('https://api.example.com');
  return res.json();
};
📖 Словарик
async
Помечает функцию как асинхронную (работает с await).
"async function getData() — асинхронная функция"
await
Ждёт завершения Promise прежде чем продолжить.
"await fetch() — ждём ответ от сервера"
Асинхронность
Код не блокируется пока ждёт ответ сервера.
"Пока запрос идёт — страница не замерзает"
Урок 7 · Слайд 5
🛡️

Обработка ошибок: try/catch

Что делать если API не отвечает

script.js
async function безопасныйЗапрос() {
  try {
    const ответ = await fetch('https://api.example.com');
    // Проверяем статус ответа
    if (!ответ.ok) {
      throw new Error('Ошибка: ' + ответ.status);
    }
    const данные = await ответ.json();
    показатьДанные(данные);
  } catch (ошибка) {
    console.error('Что-то пошло не так:', ошибка);
    показатьОшибку('Нет интернета 😢');
  } finally {
    скрытьЗагрузку(); // всегда выполняется
  }
}
📖 Словарик
try/catch
try — пробуем код, catch — ловим ошибку если что-то пошло не так.
"try { рискованный код } catch(e) { обработка }"
response.ok
true если статус ответа 200-299 (успех).
"if (!response.ok) — запрос не удался"
finally
Выполняется всегда: и при успехе, и при ошибке.
"finally скрывает индикатор загрузки"
Урок 7 · Слайд 6

Реальный пример: погода

Open-Meteo API — бесплатно, без регистрации!

script.js — погода в Москве
// Open-Meteo — бесплатный API погоды
async function получитьПогоду() {
  const url = 'https://api.open-meteo.com/v1/forecast'
    + '?latitude=55.75&longitude=37.62'
    + '¤t_weather=true';
  
  try {
    const res = await fetch(url);
    const data = await res.json();
    const temp = data.current_weather.temperature;
    document.querySelector('#temp').textContent
      = `Москва: ${temp}°C`;
  } catch (e) {
    console.error(e);
  }
}
получитьПогоду();
📖 Словарик
URL параметры
Данные передаются в адресе через ? и &.
"?latitude=55.75 — передаём широту Москвы"
Template literal
Строка с `обратными кавычками` и ${переменная}.
"`Москва: ${temp}°C` — вставка переменной в строку"
current_weather
Параметр API, запрашивающий текущую погоду.
"current_weather=true включает данные о погоде прямо сейчас"
Урок 7 · Слайд 7
🌤️

Мини-проект: приложение погоды

Создай погодное приложение!

1
Создай HTML: input для города, кнопка "Узнать погоду", блок для вывода
2
Найди координаты своего города (latitude/longitude) на maps.google.com
3
Сделай fetch к api.open-meteo.com с параметрами ?latitude=... &longitude=...
4
Покажи температуру и скорость ветра из data.current_weather
5
Добавь эмодзи погоды: ☀️ если > 20°C, 🌧️ если < 10°C, ⛅ иначе
6
Покажи сообщение "Загружаю..." пока идёт запрос 🏆