Как правильно обмениваться типами API TS через микросервисы (через npm)? - PullRequest
0 голосов
/ 23 марта 2020

У меня проблема при внедрении моей микросервисной сети. Ситуация следующая: я только что закончил первый микросервис (пусть это будет micro-A), и теперь я начинаю работать над другим (micro-B). Я понимаю, что мне нужно поделиться DTO и некоторыми интерфейсами из micro-A, чтобы использовать их в micro-B. Потому что мне нужна безопасная связь между ними. Я исследовал половину inte rnet и не нашел ответа на эту ситуацию. Есть два способа, как люди делают это - используя пакеты monorepo и npm. Я хотел бы использовать npm пакеты. Поэтому в этот момент я решил создать отдельную папку (назовем ее api-interfaces) в своем микросервисе, где я создам файл index.ts с таким кодом:

export * from './src/users/dto/profile.res.dto';
export * from './src/users/dto/user.res.dto';

, а затем создаю конфигурацию веб-пакета , который скопирует все зависимости для api-interfaces/index.ts в api-interfaces/lib/*, а затем опубликует sh в npm. Выглядит хорошо, но потом я получил следующие ошибки:

Module not found: Error: Can't resolve '@nestjs/swagger' in '/micro-user/src/profiles/dto'
 @ ../profiles/dto/profile.res.dto.ts 14:18-44
 @ ../users/dto/user.res.dto.ts
 @ ./index.ts

ERROR in ../profiles/dto/profile.res.dto.ts
Module not found: Error: Can't resolve 'class-transformer' in '/micro-user/src/profiles/dto'
 @ ../profiles/dto/profile.res.dto.ts 13:28-56
 @ ../users/dto/user.res.dto.ts
 @ ./index.ts

Кроме того, я использую сериализацию через класс-преобразователь. Итак, в этот момент я застрял ... У меня есть два вопроса: - Есть ли у вас какие-либо идеи, как разделить API DTO и интерфейсы между микросервисами? - Можете ли вы помочь мне с моей сборки веб-пакета?

...