У меня есть настройка микросервиса с шлюзом api, принимающим HTTP-запросы и передающим их разным сервисам (медиа-сервис, платежный сервис и т. Д. c.) С использованием шаблона сообщения. .user в api-gateway, который дает мне аутентифицированного пользователя из декодированного jwt. Я бы хотел передать это в микросервис мультимедиа и получить к нему доступ в рамках функций службы мультимедиа.
Как мне этого добиться?
контроллер в API-шлюзе
export class MediasController {
constructor(@Inject('MEDIA_SERVICE') private client: ClientProxy) { }
@Get()
@UseGuards(AuthGuard('jwt'))
async find(@Query() query: QueryArgs): Promise<any> {
const pattern = { cmd: 'media-find' };
return await this.client.send<any>(pattern, query)
}
}
контроллер и служба в медиа-микросервисе
medias.controller.ts
@Controller({ path: 'medias', scope: Scope.REQUEST })
export class MediasController {
constructor(private readonly mediasService: MediasService) { }
@MessagePattern({ cmd: 'media-find' })
async find(query: any): Promise<any> {
return await this.mediasService.find(query)
}
}
medias.service.ts
export class MediasService {
constructor(@InjectRepository(Media) private readonly mediaRepository: Repository<Media>) {
}
async find(query): Promise<Media[]> {
// access request.user here
return await this.mediaRepository.find(query);
}
}