Я столкнулся с проблемой, когда действие может быть выполнено с помощью последовательности существующих запросов Http, например:
api1() -> api2() -> api3()
Или мне придется создать новый API, который делает это сразу, так что это что-то вроде:
apiNew() {
api1();
api2();
api3();
}
Тогда я просто отправлю запрос в apiNew () и разрешу ему выполнять все три функции.
Однако, поскольку все три API-интерфейса связаны с изменением базы данных, каждый отдельный API оборачивается блоком транзакций.
Вот проблема, если я позвоню им отдельно. Затем, если api1()
успешно, но api2()
не удалось, база данных находится в каком-то состоянии in the middle
, что потребует ручного изменения, поэтому она может перейти в правильное состояние.
Способ, которым я сейчас делаю, - создать apiNew()
и обернуть все три в один и тот же блок транзакции, чтобы все изменения в базе данных происходили в одной транзакции.
Мне просто интересно, есть ли какой-то другой способ выполнения этого типа работы, поэтому я могу повторно использовать api1()
api2()
и api3()
таким образом, чтобы он правильно обрабатывал ошибки, не переписывая код в один вызов API.