API простыми словами: как системы обмениваются данными

Короткий ответ: API (программный интерфейс приложения) — согласованный способ попросить систему выполнить действие или отдать данные. Клиент отправляет запрос по правилам интерфейса, сервер обрабатывает его и возвращает результат. Системному аналитику важно понимать эти правила: какие данные передаются, кто имеет доступ и что происходит при ошибке.
Разберём это на вымышленном интернет-магазине. Покупатель оформляет заказ на сайте, а сервер создаёт запись и сообщает её номер. Один сценарий поможет увидеть, как связаны запрос, ответ и требования к интеграции.
Что такое API и зачем оно аналитику
Представьте кассу выдачи заказов: вы называете номер, сотрудник проверяет его и выдаёт информацию. Вам не нужно знать, как устроен склад. Но нужно соблюдать понятные правила: куда обращаться, какой номер назвать и какой ответ ожидать. API выполняет похожую роль для программ.
Интерфейс может связывать экран сайта с сервером, два сервиса внутри компании или приложение с внешней системой. API не обязательно работает через HTTP и не обязательно следует стилю REST. Ниже мы разбираем распространённый частный случай — HTTP API в стиле REST, где запросы обращаются к ресурсам, например к заказам.
Для аналитика это часть описания поведения системы. Фраза «передать заказ на сервер» оставляет слишком много вопросов. Какие поля обязательны? Может ли один пользователь посмотреть заказ другого? Что показать, если товара уже нет? Ответы нужны разработчику, тестировщику и команде соседнего сервиса.
Клиент, сервер, запрос и ответ: один заказ от кнопки до номера
Допустим, покупатель нажал «Оформить заказ». В этом примере клиент — приложение магазина в браузере. Сервер — сервис заказов, который принимает запрос и решает, можно ли создать заказ. Эти слова описывают роли в конкретном обмене: один и тот же сервис может быть сервером для приложения и клиентом для другого сервиса.

Клиент отправляет запрос:
POST /orders HTTP/1.1
Host: api.example.com
Authorization: Bearer <токен>
Content-Type: application/json
{
"productId": "book-42",
"quantity": 1
}
Здесь POST обозначает действие над коллекцией заказов, /orders — адрес ресурса, Authorization передаёт учётные данные по схеме Bearer, а Content-Type сообщает формат тела запроса. api.example.com и <токен> — условные значения; настоящий токен нельзя помещать в публичный пример.
Если заказ создан, сервер может ответить так:
HTTP/1.1 201 Created
Location: /orders/ord-204
Content-Type: application/json
{
"id": "ord-204",
"productId": "book-42",
"quantity": 1,
"status": "created"
}
Код 201 Created говорит об успешном создании ресурса, Location указывает его адрес, а тело содержит данные нового заказа. В конкретном API состав полей может быть другим — его фиксируют в документации.
Теперь клиент может запросить заказ по адресу GET /orders/ord-204. Сервер вернёт его представление, например с кодом 200 OK. Так экран узнает актуальный статус без прямого доступа к базе данных сервиса заказов.
Что такое JSON в этом примере
JSON — текстовый формат представления данных. Запись в фигурных скобках — объект с парами «имя: значение». В примере productId — строка, quantity — число. JSON также допускает логические значения true и false, null, вложенные объекты и массивы. Имена полей и их смысл определяются контрактом API.
Важно различать синтаксис и правило бизнеса. Запись "quantity": -3 может быть допустимым JSON, но недопустимым количеством товара. Аналитик должен явно описать проверку: например, целое число от 1 до 99. Серверу нужен согласованный ответ на нарушение этого правила, а интерфейсу — понятное сообщение для покупателя.
HTTP-методы и статусы: что они сообщают
Для нашего HTTP API полезно запомнить несколько методов. Это значения протокола, а не произвольные названия команд.
| Метод | Смысл по HTTP | Возможный пример в сервисе заказов |
|---|---|---|
GET | Получить представление ресурса | GET /orders/ord-204 — посмотреть заказ |
POST | Передать данные ресурсу для обработки | POST /orders — создать заказ по правилам сервиса |
PUT | Создать или заменить представление целевого ресурса | PUT /orders/ord-204 — полная замена, если API её разрешает |
PATCH | Частично изменить ресурс | PATCH /orders/ord-204 — изменить допустимые поля, если API это поддерживает |
DELETE | Попросить удалить ресурс | DELETE /orders/ord-204 — только если такое действие предусмотрено |
Нельзя решать по таблице, что интернет-магазин обязан поддерживать все пять методов. Например, отмена заказа часто подчиняется отдельным бизнес-правилам и не равна удалению записи. Набор операций нужно согласовать для конкретного продукта.
Статус ответа помогает понять итог запроса:
| Статус | Что означает в типичном случае | Что уточнить аналитику |
|---|---|---|
200 OK | Запрос выполнен | Какие данные придут в ответе? |
201 Created | Ресурс создан | Как узнать его ID и адрес? |
400 Bad Request | Запрос некорректен | Какие поля неверны и как сообщить об этом клиенту? |
401 Unauthorized | Не хватает действительных учётных данных | Как клиент получает и обновляет доступ? |
403 Forbidden | Сервер понял запрос, но отказывает в доступе | Какие роли могут выполнить действие? |
404 Not Found | Ресурс не найден или недоступен по этому адресу | Что увидит пользователь? |
409 Conflict | Запрос конфликтует с текущим состоянием ресурса | Можно ли повторить действие после изменения данных? |
Например, если покупатель отправил quantity: -3, команда может договориться о 400 и теле ошибки с полем quantity. Если он запрашивает чужой заказ, ответ зависит от политики доступа конкретного API. Нельзя заранее обещать один и тот же статус для всех систем.
Авторизация: кто вправе сделать запрос
В нашем примере клиент передаёт токен в заголовке Authorization. Сервер использует его, чтобы определить, от чьего имени поступил запрос. Затем проверяет права: может ли этот пользователь создать заказ или посмотреть заказ ord-204.
Аутентификация отвечает на вопрос «кто обращается?», авторизация — «что ему разрешено?». Токен не заменяет проверку прав на конкретный заказ. Аналитику стоит зафиксировать, кто выдаёт токен, какие операции доступны разным ролям, что происходит после истечения срока действия и какой ответ получает клиент при отказе. Секреты и реальные токены в документацию и скриншоты не вставляют.
Контракт API: о чём нужно договориться до разработки
Контракт API — описание правил обмена между сторонами. Для нашего заказа минимальный список выглядит так:

- Описать операцию:
POST /orders, её назначение и момент вызова. - Перечислить входные данные:
productIdиquantity, типы, обязательность и ограничения. - Зафиксировать успешный результат: статус
201, поля ответа и адрес созданного заказа. - Разобрать ошибки: неверное количество, неизвестный товар, отсутствие доступа, повторный запрос.
- Уточнить права: кто создаёт и читает заказы, как сервер проверяет принадлежность заказа.
- Согласовать поведение при повторе и сбое: может ли повторный
POSTсоздать второй заказ и как клиент узнает итог, если ответ потерялся.
Контракт можно оформить текстом и примерами, а для HTTP API описать машинно читаемым форматом OpenAPI. В нём фиксируют пути и операции, параметры, тела запросов, ответы и схемы безопасности. Название Swagger часто встречается рядом с OpenAPI; при чтении документации важнее найти конкретную операцию и проверить все сценарии, чем запомнить название инструмента.
Какие вопросы задаёт системный аналитик
Если вам поручили «подключить оформление заказов», начните не с рисования стрелки между системами, а с вопросов:
- Кто создаёт
productIdи кто отвечает за его актуальность? - Что делать, если товар исчез между открытием карточки и оформлением?
- Какой ответ вернётся при неверном количестве и что покажет интерфейс?
- Как предотвратить два заказа, если клиент повторит запрос после сетевого сбоя?
- Где проходит граница доступа: кто может читать и менять конкретный заказ?
Ответы превращают короткое пожелание в проверяемые требования. После этого разработчик реализует обмен, а тестировщик проверит успешный путь и ошибки. Аналитик не обязан писать серверный код, но должен уметь читать пример запроса и ответа, замечать пропущенные правила и согласовывать их с командой.
Как начать изучать API, если вы новичок
Возьмите одну операцию из документации и пройдите её в таком порядке: найдите метод и адрес, выпишите обязательные поля, прочитайте пример успешного ответа, затем проверьте ошибки и правила доступа. Для самопроверки попробуйте словами объяснить, что увидит пользователь при каждом результате. Если это неясно, документация или требования ещё неполные.
API — лишь один из навыков системного аналитика. Если вы разбираетесь, можно ли войти в профессию с нуля, этот пример поможет оценить техническую часть работы без необходимости сразу становиться разработчиком.
В программе Prosystalent есть отдельные блоки по форматам данных, интеграциям, REST API и тестированию API. Обучение длится 6 недель, затем команда сопровождает поиск работы. Предоплата — 0 ₽; после официального трудоустройства предусмотрена оплата 20% от дохода в течение 12 месяцев по условиям договора. Посмотрите условия оплаты и оставьте заявку, если хотите обсудить программу и свой старт.
Частые вопросы
API и REST API — одно и то же?
Нет. API — общее название интерфейса для взаимодействия программ. REST — архитектурный стиль. HTTP API может проектироваться с учётом принципов REST, но не всякое API работает через HTTP и не всякий HTTP API соответствует REST.
Нужно ли системному аналитику уметь программировать, чтобы работать с API?
Для описания требований обычно важнее понимать запросы, ответы, данные, права и ошибки. Умение читать JSON и документацию помогает обсуждать интеграцию с разработчиками и проверять сценарии. Требования к коду зависят от конкретной роли и компании.
Что такое endpoint?
Так часто называют адрес операции API. В примере /orders/ord-204 — путь к конкретному заказу, а сочетание GET /orders/ord-204 обозначает операцию чтения его данных.
Почему успешный запрос может вернуть 201, а не 200?
201 Created сообщает, что в результате запроса создан ресурс. 200 OK шире: запрос успешно выполнен. Для создания заказа выбор статуса и состав ответа фиксируют в контракте.
Что проверить первым, если интеграция не работает?
Сверьте метод и адрес, заголовки и права доступа, обязательные поля и формат тела. Затем посмотрите фактический HTTP-статус и ответ сервера. Это поможет отличить ошибку в запросе от отказа в доступе или сбоя на стороне сервера.
Технические источники: HTTP Semantics (RFC 9110), JSON (RFC 8259), описание REST Роя Филдинга, OpenAPI Specification.