Ресурсный конечный автомат

Многие ресурсы имеют свой жизненный цикл: заказ размещается, оплачивается, отгружается и доставляется; запуск планируется, отменяется или осуществляется. Моделирование этого процесса в виде конечного автомата означает перечисление состояний и допустимых переходов между ними, а также отказ от всего остального — вы не можете отгрузить заказ, который так и не был оплачен, или отменить заказ, который был доставлен.

Как это работает

Переходы обычно отображаются как действия — POST /orders/7/cancel — или как обновление поля статуса, которое проверяется сервером. Недопустимый переход приводит к ошибке 409 Conflict, поскольку запрос корректен, но противоречит текущему состоянию ресурса. Ответы в стиле HATEOAS могут содержать только ссылки на переходы, которые в данный момент являются допустимыми.

Заблуждение

Этот статус — всего лишь ещё одно поле. Клиент, который свободно устанавливает статус с помощью стандартной операции PUT, может пропускать состояния, от которых зависит бизнес — возврат средств без отмены заказа, доставка без отправки. Контракт заключается в переходах, а не в самом поле.

Попробуйте здесь.

API отслеживания грузов представляет собой полноценный конечный автомат: запрос POST /cargo/v1/shipments/{id}/advance перемещает посылку на один шаг и в конце получает ответ 409, а три неудачные попытки доставки возвращают её отправителю.

Источники

Другие термины

Читать страницу на английском

Все термины · Приёмы тестирования · Все 39 mock REST API

Последнее обновление