Идемпотентность и коммутативность API: что это и как применяют на практике
Вставка
- Опубліковано 16 лис 2024
- (Видео с переключением слайдов: • Идемпотентность и комм... + t.me/kateit/46)
Как повторные запросы API могут привести к сбоям в системе? Почему важно, чтобы результат операций оставался корректным, даже если их порядок выполнения изменится?
Эти вопросы об идемпотентности и коммутативности актуальны для системных аналитиков, которые работают с системами, в которых есть бронирования, заказы или платежи.
В подкасте обсудим, как принципы идемпотентности и коммутативности API помогают избежать проблем и обеспечивают корректность работы систем.
🔗 Презентация к эпизоду: getanalyst.ru/...
1:25 - Проблемы приложений, которые игнорируют идемпотентность и коммутативность в своих API.
3:24 - О принципах работы сетей с пакетной передачей данных.
6:15 - Определение идемпотентности и коммутативности. О проблемах, с которыми столкнулись на проекте из-за несоблюдения этих свойств API. Как защищаться от этих проблем со стороны UI, без изменения API.
11:40 - Ключ идемпотентности и где его использовать в REST API в headers, query или body JSON. Естественный и суррогатный ключ.
18:45 - Инварианты в пользовательских сценариях - о проблемах бизнес-логики из-за которой создаются дубликаты данных в системе.
26:00 - Коммутативность в API.
30:52 - GET, POST, PUT, PATCH, DELETE и их идемпотентность. Почему метод PATCH не идемпотентный, хотя он похож на идемпотентный. Можно ли не идемпотентные методы делать идемпотентными.
42:25 - Подведение итогов и рекомендации.
Ведущая:
Екатерина Ананьева
Гости:
Елизавета Акманова, Старший системный аналитик в компании UseTech
Очень хороший выпуск получился, спасибо) Только один момент: концы фраз немного "съедаются", как-будто нейросетке исходник скормили, чтобы убрать паузы - из-за этого немного сумбурно воспринимается иногда. А так супер!
Спасибо за обратную связь! При записи несколько моментов пострадали, будем искать способы чтобы такого не было :)
Отличный выпуск, спасибо большое! Хотелось бы порассуждать по поводу метода DELETE. Возможно я не прав, но если посмотреть на метод DELETE с точки зрения ресурса и БД, то станет понятно почему он идемпотентный - каждый последующий вызов метода DELETE не вызовет никаких изменений ресурса и никак не поменяет состояние вашей БД. Первичный вызов метода DELETE удаляет ресурс и у БД появляется некое состояние (минус какой-то объект). При последующих вызовах метода DELETE с этими же параметрами, никаких изменений в БД происходить не будет (состояние БД останется таким же как и после первого вызова). Аналогично и с методом PUT - внеся изменения в ресурс при первом вызове (поменяв состояние БД) каждый последующий вызов никак не поменяет состояние БД. При этом если взять ваш пример с методом PATCH, который допустим уменьшает баланс пользователя на 100 рублей, то каждый вызов метода PATCH (без ключа идемпотентности) будет менять состояние объекта в БД и соответственно самой БД.
Добрый день! Да, всё абсолютно так с точки зрения БД, даже добавить нечего 👍
Нет слайдов на видео, по крайней мере первого слайда пока не вижу 😢 на 5 минуте
Загрузили дополнительно видео со слайдами ua-cam.com/video/tmr8K8mBiRM/v-deo.html. Одна из платформ подкастов решила, что она не хочет доставлять видео до UA-cam)