Назад к вопросам
Лига Цифровой Экономики
Middle
2
Задание: разработать backend-метод обновления статуса заказа, доступный только администратору. Составь ТЗ для разработчика.
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Техническое задание для backend-метода обновления статуса заказа (только для администратора):
-
Описание: Метод обновляет статус заказа по его идентификатору. Доступен только пользователям с ролью администратора.
-
URL и метод:
- URL:
/api/orders/{orderId}/status - HTTP метод:
PATCHилиPUT(предпочтительно PATCH для частичного обновления)
- URL:
-
Аутентификация и авторизация:
- Метод требует аутентификации.
- Проверка роли пользователя: только администраторы имеют доступ.
- При отсутствии прав возвращать 403 Forbidden.
-
Входные данные:
- Параметр пути:
orderId— идентификатор заказа. - Тело запроса (JSON):
{ "status": "new_status" } - Допустимые значения статуса должны быть заранее определены (например, "pending", "shipped", "cancelled" и т.д.).
- Параметр пути:
-
Обработка:
- Проверить существование заказа с данным
orderId. - Проверить валидность нового статуса.
- Обновить статус заказа в базе данных.
- Логировать изменение статуса (кто, когда, с какого на какой).
- Проверить существование заказа с данным
-
Ответ:
- При успешном обновлении: HTTP 200 OK с обновлённым объектом заказа или сообщением.
- При ошибках (например, заказ не найден, неверный статус, недостаточно прав) — соответствующие коды ошибок (404, 400, 403).
-
Безопасность:
- Защита от CSRF (если применимо).
- Валидация и санитизация входных данных.
-
Пример запроса:
PATCH /api/orders/123/status HTTP/1.1 Authorization: Bearer <token> Content-Type: application/json { "status": "shipped" } -
Логирование и мониторинг:
- Логировать успешные и неуспешные попытки обновления статуса.
-
Тесты:
- Проверка обновления статуса с валидными и невалидными данными.
- Проверка доступа для разных ролей.
Это ТЗ позволит разработчику реализовать безопасный и корректный метод обновления статуса заказа с учётом бизнес-логики и требований безопасности.