Перейти к содержанию

Начало урока

Использование сторонних API

Общайтесь с сервисами, которые написали не вы, и выживайте, когда они сбоят

Главная идея: Большинство реальных приложений не делают всё сами. Они обращаются к другим сервисам по HTTP - к API погоды, платёжной системе, GitHub, модели ИИ - и объединяют эти ответы со своей логикой. Делать это хорошо - значит не просто "отправить запрос": нужно аутентифицироваться, соблюдать ограничения провайдера и оставаться на ногах, когда у сети или удалённого сервера выдался плохой день.
К концу вы сможете:
  • вызывать JSON API из Node встроенным fetch,
  • отправлять заголовки аутентификации (Bearer-токены и API-ключи) безопасно,
  • распознавать и соблюдать ограничения частоты (HTTP 429 и Retry-After),
  • строить устойчивые вызовы с таймаутами, повторами и экспоненциальной задержкой,
  • решать, когда axios оправдывает себя по сравнению с fetch.

1. Что на самом деле значит "использовать API"

Сторонний API - это HTTP-сервис, которым владеет кто-то другой. Вы - клиент: вы отправляете запрос, вам присылают ответ, обычно в формате JSON. Ваша программа на Node становится потребителем их данных или действий.

Аналогия. Обращение к API похоже на заказ в ресторане. Вы (клиент) читаете меню (документацию), делаете заказ в том формате, который ожидает кухня (запрос), и показываете карту, если заведение только для членов клуба (заголовок аутентификации). Кухня может быть перегружена и попросить подождать (ограничение частоты), а блюдо может закончиться (статус ошибки). Внимательный посетитель планирует всё это, а не считает, что каждый заказ приходит мгновенно и безупречно.

Начиная с Node 18, функция fetch в браузерном стиле встроена - пакет не нужен. Она возвращает Promise, поэтому вы используете её с async/await - ровно те навыки, что у вас уже есть:

// Node 18+ : fetch глобальный, импорт не нужен
const res = await fetch('https://api.github.com/users/nodejs');
const data = await res.json();
console.log(data.name, data.public_repos);

Два await, две стадии: fetch(...) завершается, когда пришли заголовки, а res.json() - когда всё тело прочитано и разобрано. Держите эти две стадии раздельно в голове: множество багов прячется в промежутке между ними.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя