Исключение в идемпотентном PUT-запросе? - PullRequest
0 голосов
/ 06 мая 2019

У меня проблема с реализацией операции Идемпотент в пут.

Существует запрос Put, который обновляет поле в ресурсе API отдыха.

Но для реализации Идемпотентности каждый повторный запрос должен приводить к одному и тому же состоянию объекта.

Мы используем database, что происходит, если возникает ошибка. Теперь это означает, что Idempotency потеряно? если нет

Теперь перейдем к тому же определению - если у нас есть условное изменение статуса в API покоя в поле .eg), поле состояния.

Если логика заключается в обновлении поля состояния только в том случае, если поле родительского свойства locked==false, мы можем выдать исключение, говорящее «Исключение BusinessLogic не может обновить состояние»

Итак, в теории у нас есть две операции, у нас похожая ситуация:

  1. человек мог бы быть идемпотентом, если бы не реальные ошибки, которые не могут быть избегать
  2. Нельзя быть идемпотентом, но мы можем сделать его похожим

вопрос:

Как вы реализуете идемпотентность на основе обработки ошибок для пут? и если обработка ошибок в порядке, значит ли это, что даже деловая логика может быть сделана идемпотентностью Put?

1 Ответ

1 голос
/ 06 мая 2019

Может помочь пересмотреть соответствующее определение идемпотента

Мы используем базу данных, что происходит, если возникает ошибка. Теперь это означает, что идемпотентность потеряна?

Идемпотентность не теряется. Идемпотент не обещает, что каждый запрос будет успешным; это только означает, что любая потеря свойства , произошедшая из-за того, что сервер получил несколько копий запроса, является ошибкой сервера.

означает ли это, что даже деловую логику можно превратить в идемпотентность?

Да. Вы можете сделать это одним из двух способов: разработав протокол приложения вашего домена таким образом, чтобы запросы были изначально идемпотентными; или с помощью условных запросов , чтобы описать состояние «до», что запрос намеревается изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...