Как я должен обрабатывать сбой между вызовами API - PullRequest
0 голосов
/ 28 апреля 2018

Я столкнулся с проблемой, когда действие может быть выполнено с помощью последовательности существующих запросов Http, например:

api1() -> api2() -> api3()

Или мне придется создать новый API, который делает это сразу, так что это что-то вроде:

apiNew() {
   api1();
   api2();
   api3();
}

Тогда я просто отправлю запрос в apiNew () и разрешу ему выполнять все три функции.

Однако, поскольку все три API-интерфейса связаны с изменением базы данных, каждый отдельный API оборачивается блоком транзакций.

Вот проблема, если я позвоню им отдельно. Затем, если api1() успешно, но api2() не удалось, база данных находится в каком-то состоянии in the middle, что потребует ручного изменения, поэтому она может перейти в правильное состояние.

Способ, которым я сейчас делаю, - создать apiNew() и обернуть все три в один и тот же блок транзакции, чтобы все изменения в базе данных происходили в одной транзакции.

Мне просто интересно, есть ли какой-то другой способ выполнения этого типа работы, поэтому я могу повторно использовать api1() api2() и api3() таким образом, чтобы он правильно обрабатывал ошибки, не переписывая код в один вызов API.

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете сделать это без фактической транзакции, но смоделировав свой API и базу данных и используя ключи идемпотентности .

...