Telegram Group & Telegram Channel
Шаринг типов между сервером и клиентом

Вчера в одном чатике задали вопрос на эту тему:> Вот смотрите, предположим, есть backend на питоне, есть UI на Angular. Оба используют контрактные (согласованные) структуры - бэк отдавая, фронт получая. Как мне подружить эти схемы, что б можно было вести только в одном месте ?

Тут у нас какие варианты, давайте по рассуждаем.

Первый идеальный. У нас на беке и фронте TS, поэтому проблемы как таковой и нет. Честно говоря, мне настолько понравилось последнее время делать проекты в этом стиле, что я бы в будущем так все проекты и делал. Особенно учитывая наличие великолепной drizzle orm в node.js (просто вау)

Второй энтерпрайзный. Описываем отдельную спеку в https://typespec.io/ затем из нее генерим не только типы, но и sdk для работы. Но такой подход тяжелее и больше используется для взаимодействия сервисов друг с другом, чем для клиент-серверного взаимодействия где это может быть оверкилом. Ну и на беке все равно будет связка “свои модели” - “сгенерированные dto” - “маппинги”, то есть рутины все равно достаточно.

Третий практичный. В этом варианте мы генерируем TS типы из наших моделей или dto (что правильнее). Как правило для бекенд фреймворков есть готовые либы https://github.com/skryukov/typelizer Если нет, то можно попросить chatgpt написать конвертер. Этот вариант не без изъянов, так как типы не мапятся один в один, то иногда в беке надо явно прописывать фронтендовые типы как строки. В https://code-basics.com выбран именно этот вариант.

Четвертый апишный. Генераторы на уровне описания самого апи в беке. То есть пишем апишку, добавляем мету и из нее генерим спеку, дальше из этой спеки можно уже типы для фронта https://drf-yasg.readthedocs.io/en/stable/. Возможно наиболее популярный путь, но такое точно не сработает с подходом аля inertia.js.

Четвертый рукпошка. Просто описываем типы независимо от бека и страдаем. Как ни странно, этот вариант не на последнем месте по популярности.

p.s. А как делаете вы и нравится ли вам такой подход?

Ссылки: Телеграм | Youtube | VK



group-telegram.com/orgprog/294
Create:
Last Update:

Шаринг типов между сервером и клиентом

Вчера в одном чатике задали вопрос на эту тему:> Вот смотрите, предположим, есть backend на питоне, есть UI на Angular. Оба используют контрактные (согласованные) структуры - бэк отдавая, фронт получая. Как мне подружить эти схемы, что б можно было вести только в одном месте ?

Тут у нас какие варианты, давайте по рассуждаем.

Первый идеальный. У нас на беке и фронте TS, поэтому проблемы как таковой и нет. Честно говоря, мне настолько понравилось последнее время делать проекты в этом стиле, что я бы в будущем так все проекты и делал. Особенно учитывая наличие великолепной drizzle orm в node.js (просто вау)

Второй энтерпрайзный. Описываем отдельную спеку в https://typespec.io/ затем из нее генерим не только типы, но и sdk для работы. Но такой подход тяжелее и больше используется для взаимодействия сервисов друг с другом, чем для клиент-серверного взаимодействия где это может быть оверкилом. Ну и на беке все равно будет связка “свои модели” - “сгенерированные dto” - “маппинги”, то есть рутины все равно достаточно.

Третий практичный. В этом варианте мы генерируем TS типы из наших моделей или dto (что правильнее). Как правило для бекенд фреймворков есть готовые либы https://github.com/skryukov/typelizer Если нет, то можно попросить chatgpt написать конвертер. Этот вариант не без изъянов, так как типы не мапятся один в один, то иногда в беке надо явно прописывать фронтендовые типы как строки. В https://code-basics.com выбран именно этот вариант.

Четвертый апишный. Генераторы на уровне описания самого апи в беке. То есть пишем апишку, добавляем мету и из нее генерим спеку, дальше из этой спеки можно уже типы для фронта https://drf-yasg.readthedocs.io/en/stable/. Возможно наиболее популярный путь, но такое точно не сработает с подходом аля inertia.js.

Четвертый рукпошка. Просто описываем типы независимо от бека и страдаем. Как ни странно, этот вариант не на последнем месте по популярности.

p.s. А как делаете вы и нравится ли вам такой подход?

Ссылки: Телеграм | Youtube | VK

BY Организованное программирование | Кирилл Мокевнин


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/orgprog/294

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

For tech stocks, “the main thing is yields,” Essaye said. The picture was mixed overseas. Hong Kong’s Hang Seng Index fell 1.6%, under pressure from U.S. regulatory scrutiny on New York-listed Chinese companies. Stocks were more buoyant in Europe, where Frankfurt’s DAX surged 1.4%. The regulator said it has been undertaking several campaigns to educate the investors to be vigilant while taking investment decisions based on stock tips. "And that set off kind of a battle royale for control of the platform that Durov eventually lost," said Nathalie Maréchal of the Washington advocacy group Ranking Digital Rights. And while money initially moved into stocks in the morning, capital moved out of safe-haven assets. The price of the 10-year Treasury note fell Friday, sending its yield up to 2% from a March closing low of 1.73%.
from ye


Telegram Организованное программирование | Кирилл Мокевнин
FROM American