Куда отправлять клиента после оплаты заказа если нельзя выполнять команды в CQRS

«Куда отправлять клиента после оплаты заказа если нельзя выполнять команды в CQRS» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

После успешной оплаты заказа в CQRS-архитектуре, где команды не должны возвращать данные, лучше всего:

  1. Использовать редирект на страницу успешной оплаты с параметром заказа:
// После успешного ответа от API оплаты
window.location.href = `/success?orderId=${orderId}`;
  1. На странице успеха запрашивать статус заказа через query:
// На странице /success
const orderId = new URLSearchParams(window.location.search).get('orderId');
fetch(`/api/orders/${orderId}`)
  .then(response => response.json())
  .then(showOrderDetails);

Это позволяет:

  • Сохранить идемпотентность команд
  • Не нарушать CQRS принципы
  • Дать пользователю обратную связь
  • Обработать возможные ошибки асинхронно