Существует ли способ RESTful для определения успешности POST?

Существует ли способ RESTful определить, будет ли успешным POST (или любой другой неидемпотентный глагол)? Это может оказаться полезным в тех случаях, когда вам необходимо выполнить несколько идемпотентных запросов к разным службам, любой из которых может завершиться ошибкой. Было бы неплохо, если бы эти запросы можно было выполнять в «транзакции» (т. е. с поддержкой отката), но поскольку это невозможно, альтернативой является проверка успешности каждого из запросов перед их фактическим выполнением.

Например, предположим, что я создаю систему электронной коммерции, которая позволяет людям покупать футболки с напечатанным на них пользовательским текстом, и эта система требует интеграции с двумя разными службами: службой печати футболок и платежной службой. У каждого из них есть RESTful API, и любой из них может дать сбой. (например, типография может отказаться печатать определенные слова на футболке, скажем, и банк может пожаловаться, если срок действия кредитной карты истек.) Есть ли способ спекулятивно выполнить эти два запроса, чтобы моя система продолжала только их, если оба запроса окажутся действительными?

Если нет, то можно ли решить эту проблему по-другому? Создание ресурса через POSTс status = pendingи изменение его на status = complete, если все запросы выполнены успешно? (DELETEсложнее...)

5
задан mjs 17 April 2012 в 17:21
поделиться