Re[19]: Идемпотентность POST - хорошая ли практика?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 27.09.22 08:29
Оценка:
Здравствуйте, Pauel, Вы писали:

P>Здравствуйте, gandjustas, Вы писали:


G>>>>И как клиент может проконтролировать?

G>>Какие обязанности у клиента?
P>Обычные — сделать запрос в соответствии с его семантикой. Если АПИ говорит о том, что операция идемпотентна, то на клиенской стороне надо сделать N соответствующих приседаний. Разумеется, это все делается самим клиентом по метаданным, а не вручную отсылая запрос POST.
Какие метаданные сообщают клиенту что операция идемпотента?

G>>В каком описании присутствует информация об идемпотентности тех или иных вызовов?

P>Я привел описание, вернись и посмотри. Выглядит так, будто ты накидываешь не читая.
Ты не понял вопроса: какое описание получает клиент? В лучшем случае это swagger. В нем никак не указывается идемпотентность методов.
Что ты привел — я не знаю. Если ты сам делаешь и клиент и сервер, то можешь использовать любые методы как угодно.

P>>>Что не так с этими операциями? Вот есть у тебя ключ x-y-z, метод POST и кучка add-remove-copy. Если сервер поддерживает идемпотентность для этой операции, то какие проблемы?

G>>Я не очень понимаю что значит "поддерживает" когда мы говорим об операциях вроде add-remove-copy. В зависимости от порядка выполнения набора add-remove-copy результат может быть разный.
P>Что мешает зафиксировать этот порядок или вообще убрать эти add-remove-copy?
P>Как то странно выполнять приседания пачкой каждый раз. Если хочешь, что бы батч, а add-remove-copy, это фактически батч, был идемпотентным, то надо приложить чуть больше усилий, чем просто выполнять каждый раз и ждать того же результата.
P>Например, порядок должен быть зафиксирован, эта пачка операций идет внутри транзакции, и выполняется ровно один раз, не больше, и не меньше. Отсюда не ясно, как ты собиаешься получить "разный" результат.
Это уже правильный путь. Если сделать несколько шагов, то получится PUT на урл с ключом и полным "объектом" в теле, без всяких дельт.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.