Sobes.tech
Middle

Taak: ontwikkel een backend-methode om de status van een bestelling bij te werken, alleen toegankelijk voor beheerders. Stel een technische specificatie op voor de ontwikkelaar.

sobes.tech AI

Antwoord van AI

Техническое задание для backend-метода обновления статуса заказа (только для администратора):

  1. Описание: Метод обновляет статус заказа по его идентификатору. Доступен только пользователям с ролью администратора.

  2. URL и метод:

    • URL: /api/orders/{orderId}/status
    • HTTP метод: PATCH или PUT (предпочтительно PATCH для частичного обновления)
  3. Аутентификация и авторизация:

    • Метод требует аутентификации.
    • Проверка роли пользователя: только администраторы имеют доступ.
    • При отсутствии прав возвращать 403 Forbidden.
  4. Входные данные:

    • Параметр пути: orderId — идентификатор заказа.
    • Тело запроса (JSON):
      {
        "status": "new_status"
      }
      
    • Допустимые значения статуса должны быть заранее определены (например, "pending", "shipped", "cancelled" и т.д.).
  5. Обработка:

    • Проверить существование заказа с данным orderId.
    • Проверить валидность нового статуса.
    • Обновить статус заказа в базе данных.
    • Логировать изменение статуса (кто, когда, с какого на какой).
  6. Ответ:

    • При успешном обновлении: HTTP 200 OK с обновлённым объектом заказа или сообщением.
    • При ошибках (например, заказ не найден, неверный статус, недостаточно прав) — соответствующие коды ошибок (404, 400, 403).
  7. Безопасность:

    • Защита от CSRF (если применимо).
    • Валидация и санитизация входных данных.
  8. Пример запроса:

    PATCH /api/orders/123/status HTTP/1.1
    Authorization: Bearer <token>
    Content-Type: application/json
    
    { "status": "shipped" }
    
  9. Логирование и мониторинг:

    • Логировать успешные и неуспешные попытки обновления статуса.
  10. Тесты:

    • Проверка обновления статуса с валидными и невалидными данными.
    • Проверка доступа для разных ролей.

Это ТЗ позволит разработчику реализовать безопасный и корректный метод обновления статуса заказа с учётом бизнес-логики и требований безопасности.