Несколько недель назад я показал основные идеи и терминологию веб-API. В этой статье я продемонстрирую, как применить эти знания, и опробую API с помощью ручного тестирования.

Изменить запрос

Самый простой способ начать тестирование любого API — найти работающий пример, а затем настроить его. Вы можете выбрать любой веб-сайт и посмотреть, какие запросы он выполняет. Например, если вы откроете инструменты разработчика в Chrome и перезагрузите мой блог на how-to.dev, вы увидите множество запросов, отправленных с сайта:

В списке у нас есть несколько типов или запросов:

  • скрипт или таблица стилей с именами 4421.a65a… или 6238.6ee7…,
  • fetch с такими именами, как пользователь, теги, события,
  • xhr с именем события,
  • и некоторые другие типы с ресурсами: svg, avif, font.

Нас больше всего интересуют типы запросов fetch и xhr. Оба могут быть запущены со стороны JavaScript и использованы для взаимодействия с веб-API. Другие запросы, которые мы видим здесь, — это запросы на загрузку некоторых статических файлов — кода или некоторого медиаконтента. Для каждого из запросов, которые мы видим в списке, мы можем скопировать один из форматов:

Копирование кода позволяет легко сделать одну из двух вещей:

  • повторно запустите запрос точно так же, как это было сделано приложением, или
  • настройте запрос, чтобы увидеть, как API работает с различными входными данными.

Принести

Fetch — это интерфейс JavaScript для взаимодействия с серверами, например для взаимодействия с веб-API. Подробнее можно прочитать на сайте MDN. Здесь мы увидим наш пример запроса:

fetch("https://how-to.dev/api/user", {
  "headers": {
    "accept": "application/json",
    "accept-language": "en-GB,en-US;q=0.9,en;q=0.8",
    "baggage": "sentry-environment=vercel-production,sentry-release=736267205a61e0548a85c08aab089d3f1421126b,sentry-transaction=%2F%5B...slug%5D,sentry-public_key=0fbf92e944b8468cb9706e15c488c84e,sentry-trace_id=a2a1dbab6f5b4c619173000812050469,sentry-sample_rate=0",
    "content-type": "application/json",
    "if-none-match": "\"as45c9ut8od\"",
    "sec-ch-ua"…