Добро пожаловать на практикум по тестированию REST API!
Научитесь тестировать REST API на реальном проекте Transactions Manager за 1 день.


REST (Representational State Transfer) — это архитектурный стиль для создания сетевых приложений.
API (Application Programming Interface) — интерфейс, через который разные программы обмениваются данными.
REST API позволяет клиенту (например, браузеру или приложению) общаться с сервером с помощью стандартных HTTP-запросов.
Каждый метод описывает, что именно клиент хочет сделать:
| Метод | Назначение | Пример использования |
|---|---|---|
| GET | Получить ресурс | Получить список товаров |
| POST | Создать новый ресурс | Создать новый заказ |
| PUT | Полностью обновить существующий ресурс | Обновить профиль пользователя |
| PATCH | Частично обновить ресурс | Обновить только email пользователя |
| DELETE | Удалить ресурс | Удалить отзыв к товару |
Сервер всегда возвращает код состояния, который говорит о результате обработки запроса:
| Код | Категория | Значение |
|---|
| 200 | Успех | OK — запрос выполнен успешно |
| 201 | Успех | Created — ресурс успешно создан |
| 204 | Успех | No Content — запрос выполнен, но без тела ответа |
| 400 | Ошибка клиента | Bad Request — неверный запрос |
| 401 | Ошибка клиента | Unauthorized — нет авторизации |
| 403 | Ошибка клиента | Forbidden — нет прав на доступ |
| 404 | Ошибка клиента | Not Found — ресурс не найден |
| 500 | Ошибка сервера | Internal Server Error — ошибка сервера |
Запрос состоит из нескольких частей:
Метод (GET, POST и т.д.)
URL (адрес, куда отправляется запрос)
Заголовки (Headers) — метаинформация (например, Content-Type)
Тело запроса (Body) — данные, отправляемые на сервер (актуально для POST, PUT, PATCH)
Пример POST-запроса:
POST https://api.test.com/products
Content-Type: application/json
{
“name”: “Новый товар”,
“price”: 99.99
}
Статус-код: например, 201 Created
Заголовки: информация о формате, длине ответа и т.д.
Тело ответа (Body): данные от сервера в формате JSON или XML
Пример ответа:
{
“id”: 123,
“name”: “Новый товар”,
“price”: 99.99
}
Полный цикл “Клиент отправляет запрос → Сервер отвечает

Проект для тестирования API управления финансовыми транзакциями.
Вы будете проверять эндпоинты для операций CRUD, аутентификации и обработки ошибок.
Transaction Manager — веб-приложение для управления финансовыми транзакциями
Приложение предоставляет пользователям возможность:
Создавать, просматривать, редактировать и удалять транзакции
Следить за текущим состоянием операций (в ожидании, завершены, неудачные)
Отслеживать общую сумму отправленных и полученных средств
Использовать встроенный интерфейс для тестирования API-запросов (REST Tester)
Перед тестированием проекта давайте ознакомимся с документацией.
Этот API предоставляет функциональность для управления финансовыми транзакциями между пользователями в приложении. Поддерживаются операции создания, получения, обновления и удаления транзакций.
Версия: 1.0.0
Коды ошибок
– **400 Bad Request**: Неверный формат запроса или отсутствуют обязательные параметры.
– **401 Unauthorized**: Отсутствует или недействителен API-ключ.
– **403 Forbidden**: У пользователя недостаточно прав для выполнения операции.
– **404 Not Found**: Транзакция с указанным ID не найдена.
– **500 Internal Server Error**: Внутренняя ошибка сервера.
Схема данных
| Поле | Тип | Описание | Обязательное |
|---|---|---|---|
| id | UUID | Уникальный идентификатор транзакции | Нет (генерируется сервером) |
| from_user | UUID | ID пользователя-отправителя | Нет (заполняется сервером) |
| to_user | String | Email получателя | Да |
| amount | Float | Сумма транзакции | Да |
| status | String | Статус транзакции (pending, completed) | Да |
| created_at | Timestamp | Дата и время создания | Нет (генерируется сервером) |
Предварительная проверка API
Перед тем как приступить к тестированию API в Postman, вы можете проверить его работу непосредственно на сайте с помощью встроенного REST API Tester.
Для этого:
1. Перейдите в раздел **REST Tester**.
2. Выберите нужный метод (например, GET, POST, PATCH, DELETE) и эндпоинт (например, `/transactions`).
3. Нажмите кнопку **Send Request** и проверьте ответ от сервера.
Это позволит вам убедиться, что API работает корректно, прежде чем переходить к тестированию в Postman.
Перейдите в раздел Environments (слева на панели).
Нажмите New → Environment.
Дайте имя, например: Supabase.
Добавление переменных
Добавьте следующие переменные:
| Variable | Type | Current value |
|---|---|---|
apikey | default | eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp… |
access_token | default | оставляем пустым |
BASE_URL | default | https://wfeyphieqwpnkkqgyvci.supabase.co |
refresh_token | default | оставляем пустым |
expires_at | default | оставляем пустым |
user_id | default | оставляем пустым |
transaction_id | default | оставляем пустым |
После успешной регистрации или авторизации логина в ответе автоматически получаем:
access_token
refresh_token
expires_at
user_id
Активировать окружение
В правом верхнем углу выберите окружение Supabase из выпадающего списка.
Предусловия:
{{BASE_URL}}/auth/v1/signup
Headers:
apikey: {{apikey}}
Content-Type: application/json
Шаги:
В теле запроса указать валидные данные:
Ожидаемый результат:
Статус ответа 200 OK.
В ответе отображается JSON с:
{
“access_token”: “eyJhbGciOiJIUzI1NiIsI….”,
“token_type”: “bearer”,
“expires_in”: 3600,
“expires_at”: 1746959398,
“refresh_token”: “jNz4FQVNkq2g9MvhFfo5rg”,
“user”: {
“id”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”,
“aud”: “authenticated”,
“role”: “authenticated”,
“email”: “test+user1@gmail.com”,
“email_confirmed_at”: “2025-05-11T09:29:58.085353677Z”,
“phone”: “”,
“last_sign_in_at”: “2025-05-11T09:29:58.09131949Z”,
“app_metadata”: {
“provider”: “email”,
“providers”: [
“email”
]
},
“user_metadata”: {
“email”: “test+user1@gmail.com”,
“email_verified”: true,
“phone_verified”: false,
“sub”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”
},
“identities”: [
{
“identity_id”: “c58c2cb7-11c1-4fa2-8b68-25ed529f0c02”,
“id”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”,
“user_id”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”,
“identity_data”: {
“email”: “test+user1@gmail.com”,
“email_verified”: true,
“phone_verified”: false,
“sub”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”
},
“provider”: “email”,
“last_sign_in_at”: “2025-05-11T09:29:58.072334449Z”,
“created_at”: “2025-05-11T09:29:58.072406Z”,
“updated_at”: “2025-05-11T09:29:58.072406Z”,
“email”: “test+user1@gmail.com”
}
],
“created_at”: “2025-05-11T09:29:58.04943Z”,
“updated_at”: “2025-05-11T09:29:58.099853Z”,
“is_anonymous”: false
}
}
Перейти во вкладку Scripts
Post-Response
Предусловия:
{{BASE_URL}}/auth/v1/token?grant_type=password
Headers:
apikey: {{apikey}}
Content-Type: application/json
Шаги:
В теле запроса указать валидные данные:
Ожидаемый результат:
Статус ответа 200 OK.
В ответе отображается JSON с:
{
“access_token”: “eyJhbGciOiJIUzI1NiIsImtpZCI6InArZENUNWlleld6d…”,
“token_type”: “bearer”,
“expires_in”: 3600,
“expires_at”: 1746959398,
“refresh_token”: “jNz4FQVNkq2g9MvhFfo5rg”,
“user”: {
“id”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”,
“aud”: “authenticated”,
“role”: “authenticated”,
“email”: “test+user1@gmail.com”,
“email_confirmed_at”: “2025-05-11T09:29:58.085353677Z”,
“phone”: “”,
“last_sign_in_at”: “2025-05-11T09:29:58.09131949Z”,
“app_metadata”: {
“provider”: “email”,
“providers”: [
“email”
]
},
“user_metadata”: {
“email”: “test+user1@gmail.com”,
“email_verified”: true,
“phone_verified”: false,
“sub”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”
},
“identities”: [
{
“identity_id”: “c58c2cb7-11c1-4fa2-8b68-25ed529f0c02”,
“id”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”,
“user_id”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”,
“identity_data”: {
“email”: “test+user1@gmail.com”,
“email_verified”: true,
“phone_verified”: false,
“sub”: “43830d10-1c91-46f7-aaa7-573afc0b8fa5”
},
“provider”: “email”,
“last_sign_in_at”: “2025-05-11T09:29:58.072334449Z”,
“created_at”: “2025-05-11T09:29:58.072406Z”,
“updated_at”: “2025-05-11T09:29:58.072406Z”,
“email”: “test+user1@gmail.com”
}
],
“created_at”: “2025-05-11T09:29:58.04943Z”,
“updated_at”: “2025-05-11T09:29:58.099853Z”,
“is_anonymous”: false
}
}
Перейти во вкладку Scripts
Post-Response
Название: Успешное создание транзакции с валидными данными
Предусловия:
Пользователь авторизован (например, test+user1@gmail.com).
API-интерфейс POST /rest/v1/transactions
доступен.
HEADERS:
apikey: {{apikey}}
Content-Type: application/json
Authorization: Bearer {{access_token}}
Prefer: return=representation
Шаги:
В теле запроса указать валидные данные:
Ожидаемый результат:
Статус ответа 201 Created.
В ответе отображается JSON с:
сгенерированным id,
корректным from_user (текущий пользователь),
полем to_user со значением "recipient@test.com",
полем amount со значением 10.5,
полем status со значением "pending",
полем created_at с актуальной меткой времени.
Перейти во вкладку Scripts
Post-Response
Что делает каждая строка:
const response = pm.response.json();
Эта строка превращает ответ от сервера (обычно в формате JSON) в JavaScript-объект и сохраняет его в переменную response.
Если сервер возвращает массив объектов, response становится массивом.
pm.environment.set("transaction_id", response[0].id);
Из этого массива берётся первый объект response[0], и из него — значение поля id.
Затем это значение сохраняется в переменную окружения transaction_id, чтобы можно было использовать её в других запросах как {{transaction_id}}.
Название: Успешное обновление существующей транзакции
Предусловия:
Пользователь авторизован.
В системе уже существует транзакция с id.
API /rest/v1/transactions?id=eq.{{transaction_id}} поддерживает метод PATCH.
HEADERS:
apikey: {{apikey}}
Content-Type: application/json
Authorization: Bearer {{access_token}}
Prefer: return=representation
Шаги:
В теле запроса указать валидные данные:
Ожидаемый результат:
Статус ответа 200 OK.
В ответе отображается JSON с:
Цель: Научиться отправлять GET-запрос на получение одной транзакции по id.
Цель: Получить массив всех созданных транзакций.
Цель: Научиться удалять транзакции по ID.

Если вам требуется какая-либо поддержка или у вас возникли дополнительные вопросы, не стесняйтесь связаться с нами – мы готовы быстро оказать вам помощь.
Коллекция в Postman — это набор API-запросов, сгруппированных по смыслу. Она упрощает тестирование и автоматизацию работы с API.
Скачайте файл коллекции в формате .json, откройте Postman, нажмите Import, выберите файл и нажмите Open.
Да, после импорта вы можете изменять запросы, добавлять новые, сохранять переменные и делиться коллекцией с коллегами.
После завершения практикума вы сможете продолжить обучение на углублённом месячном курсе по REST API.
Мы также присутствуем в социальных сетях! Подписывайтесь на нас и получайте последние новости, акции, скидки, бесплатные тренинги и участие в марафонах.
Будем рады видеть вас в нашем сообществе!
Публичная оферта. Авторское право © 2024 Школа подготовки тестировщиков