Урок 1 из 8 · 15 мин · обновлено

Что такое API: клиент, сервер, запрос и ответ

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

Как приложения разговаривают с сервером

Откройте приложение доставки: список ресторанов, меню, корзина, статус заказа. Всё это хранится не в телефоне, а на сервере компании. Приложение — клиент — каждый раз спрашивает сервер:

  • «Покажи рестораны рядом» — сервер присылает список;
  • «Добавь пиццу в корзину» — сервер запоминает и отвечает «готово»;
  • «Какой статус у заказа 1042?» — сервер отвечает «курьер в пути».

Каждый такой вопрос — запрос, каждый ответ сервера — ответ. А правила, по которым они устроены, — API (application programming interface, программный интерфейс приложения).

Удобное сравнение — меню в кафе. В меню перечислено, что можно заказать и что вы получите. Как готовят на кухне, гостю знать не нужно. API — такое меню для программ: какие запросы можно отправить и какие ответы придут.

Эндпоинты

У API много действий, и у каждого свой адрес — эндпоинт (endpoint). В учебном API интернет-магазина, с которым мы будем работать, они такие:

Эндпоинт Что делает
https://dummyjson.com/products список товаров
https://dummyjson.com/products/1 товар с номером 1
https://dummyjson.com/products/search?q=phone поиск товаров
https://dummyjson.com/carts/1 корзина с номером 1

Первую часть адреса — https://dummyjson.com — называют базовым адресом. Он общий для всех запросов, а дальше идёт путь к нужному действию.

Откройте https://dummyjson.com/products/1 прямо в браузере. Вы увидите текст в фигурных скобках — это ответ сервера в формате JSON. Браузер сейчас сам стал клиентом и отправил запрос.

Один API — много клиентов

Одним и тем же API пользуются сразу несколько клиентов: сайт, приложения для Android и iPhone, касса в магазине, сервис партнёров. Поэтому API — центральная часть системы. Если он отдаёт неправильные данные, ошибка будет везде сразу.

Сервисы общаются через API и между собой: магазин спрашивает у банка, прошла ли оплата, у службы доставки — сколько стоит привезти заказ, у карт — адрес по координатам.

Зачем проверять API отдельно

Тестировщик может проверять приложение через интерфейс: нажимать кнопки и смотреть на экран. Но многие ошибки удобнее искать на уровне API:

  • интерфейса ещё нет, а сервер уже готов — проверить можно раньше;
  • через API быстро перебрать много вариантов: пустые поля, огромные числа, чужие данные;
  • если экран показывает ошибку, по запросу и ответу видно, кто виноват — приложение или сервер.

Для этого нужна программа, которая умеет отправлять запросы и показывать ответы. Самая популярная — Postman. До неё дойдём в уроке 4, а сначала разберёмся, из чего состоят запросы и ответы.

Попробуйте сами. Откройте в браузере три адреса: https://dummyjson.com/products/1, https://dummyjson.com/products/2 и https://dummyjson.com/products/0. Что изменилось в ответе? Что, по-вашему, значит последний ответ?

Ответ

Первые два адреса возвращают разные товары: число в конце пути — номер товара. В ответе есть его название title, цена price, категория, рейтинг и другие поля.

Третий адрес возвращает:

JSON
{"message":"Product with id '0' not found"}

Товара с номером 0 нет, и сервер сообщает об этом. Помимо текста, он вернул код ответа 404 — «не найдено». Браузер его не показывает, а Postman покажет. О кодах — в следующем уроке.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Что такое API простыми словами?

  2. Кто в паре «приложение доставки — сервер» является клиентом?

  3. Почему API часто тестируют отдельно от интерфейса?