У нас была дискуссия с коллегой (фронтэндом) о том, чья ответственность должна заключаться в том, чтобы справляться со сложностью, и мы действительно не пришли к выводу.
Основная идея: чья ответственность должна заключаться в том, чтобы справляться со сложностью - должен ли бэкэнд иметь дополнительные более сложные конечные точки, объединяющие несколько простых существующих конечных точек, или клиент (внешний интерфейс) должен делать несколько вызовов простых конечных точек?
Пример пары:
Восстановление ключей API
С моей точки зрения - это очень просто - есть конечная точка для удаления ключа и для создания ключа, и клиент должен просто вызвать эти 2, тем более что существует идея расширения для поддержки нескольких ключей на конечного пользователя.
С точки зрения коллеги - должна быть конечная точка, которая объединяет эти 2 действия в одно, потому что было бы проще отменить изменения, если второе действие (Добавить ключ) завершилось неудачей.
Другой пример - когда пользователь регистрируется, мы создаем для него несколько вложенных объектов, что-то вроде
Parent
⮑Child
⮑GrandChild
Моя идея еще раз - простые конечные точки для операций CRUD и их цепочка (3 вызова), и у моего коллеги есть одно мнение о том, как обрабатывать сбой, если один из них дает сбой.