
Комментарии 7
Вы пробовали когда-нибудь писать код для такой реализации? Похоже нет. Как вы будете переводить аккаунт в состояние “closed” и запускать связанную с этим бизнес-логику? У вас будет настолько много кода, который проверяет, какое поле изменилось и с какого на какое значение, что большую часть времени по любой задаче разработчики будут разбираться, как это работает и где надо поменять для новых требований. Ну и соответственно будет много ошибок из-за того, что они поняли что-то неправильно, или не учли все возможные комбинации.
REST в таком виде можно использовать только в проектах, где настолько мало бизнес-логики, что в реальных приложениях это практически не встречается. Более правильный подход это использовать RPC - есть процедура, у нее описан вход и результат. Вход и результат необязательно должны иметь структуру со всеми полями сущности. Его тоже часто называют REST API, из-за чего возникает путаница. Но формально это называется RPC, так как тут указывается имя процедуры.
Для закрытия аккаунта это будет что-то вроде POST /closeAccount?id=.... Да, для перевода в статус frozen будет другая процедура, с другой бизнес-логикой и возможно другими входными параметрами. Такой код проще поддерживать.
Спасибо за развернутый комментарий. Согласна, что для таких сценариев подходят другие методы, но в данной статье я сознательно упростила пример, чтобы показать структуру ТЗ на API, а не бизнес-логику перехода статусов.
Я как раз говорю о том, что такого ТЗ на API быть не должно. Такое API будет сложно поддерживать. В API должны быть действия бизнес-логики с описанием входа и выхода.
Можете поделиться ссылками на статьи или другие источники на данную тему?
Я же написал объяснение с описанием возможных сложностей, какие еще источники нужны? Пробуете написать код обработки для PUT /account и убеждаетесь, что так и есть. Если же у вас нет навыков программирования, тогда вам не стоит составлять технические требования для разработчиков как делать API, попросите помощи архитекторов или senior-разработчиков на вашем проекте.
Как вариант, можете спросить LLM, верно ли написано в моем комментарии.
Crud и restfull. Не увидел ни того ни другого
Шаблон ТЗ для проектирования REST API: готовый инструмент для аналитика