Conversation
katunilya
left a comment
There was a problem hiding this comment.
Я не "докапываюсь" просто хочу понять, насколько ты понимаешь разницу между post и put. Просто семантически выбивает немного.
Вообще naming такая смешная штука. Вот вроде есть JSONSchema, которая вроде как на уровне API имеет место быть. А вроде как есть схемы, которые для БД. А вроде это модели, а моделями еще называют то, что в бизнес логике и начинает болеть голова. Но это так, лирическое нытье)
Тут какой парадокс хексагоналки... на самом деле это та же самая "сервисная" архитектура, просто авторы сказали - есть богоподобный сервис, который отвечает за бизнес логику (он конечно может быть не один и конечно не богоподобный), который окружен набором инфраструктурных сервисов, которые мы чтобы не салиться назовем адаптеры...
На самом деле это просто семантика, которая особо глубокого смысла не несет. Что адаптер, что сервис, хоть UseCase называйте (а так делают). Все равно в основе лежит идея - бизнес логика изолирована от инфраструктуры, это инфраструктура под нее адаптируется (это кстати объясняет почему так назвали).
Это все к чему? А к тому, что пока структура проекта выглядит как модульный монолит, где модель это микро-хексагон. В теории это может быть оправданным решением, насколько оно оправдано в данном случае... не уверен.
И тут как бы в чем фишка - адаптеры в рамках бизнес-логики — это абстракции, т.е. мы зависим от интерфейсов. Но мы в функциональненьком питоне и сразу начинаем зависеть от конкретного модуля с конкретной реализацией. Ну и как-то толку от этого нет.
Ну просто вы сейчас можете неожиданно узнать, что, например mongodb умеет в хранение файлов (по крайней мере на C# я точно находил дрова для этого, скорее всего и для питона будут) и тут оказывается, что нужно все это дело переписать и бизнес логику тоже переписать. потому что это не адаптеры) но для питона это не очень свойственное решение
src/api_gateway/books/__init__.py
Outdated
| from src.api_gateway.books.get import * | ||
| from src.api_gateway.books.post import * | ||
| from src.api_gateway.books.put import * |
src/api_gateway/books/put.py
Outdated
| from src.books.adapters import sources, info | ||
|
|
||
|
|
||
| @palt_app.put("/new_book_source/") |
No description provided.