#javascript #node.js #swagger #nestjs #nestjs-swagger
#javascript #node.js #развязность #nestjs #nestjs-swagger
Вопрос:
Я создал пакет микросервиса NestJS и отдельное клиентское приложение NestJS для связи с микросервисом. Ниже приведен код, используемый в клиентском приложении. В микросервисе используется метод @messagePattern, и он функционален. Мой вопрос в том, как интерфейсное приложение может напрямую обращаться к микросервису, не проходя через клиент, а также как настроить swagger в микросервисе или протестировать его непосредственно у почтальона?
import { BadRequestException, Injectable, UnauthorizedException } from '@nestjs/common';
import { ClientProxy, ClientProxyFactory, Transport } from '@nestjs/microservices';
import { errorResponse, goodResponse } from 'src/helpers/response.helper';
import { AddContractDTO } from './contract.dto';
@Injectable()
export class ContractService {
private client: ClientProxy;
constructor() {
this.client = ClientProxyFactory.create({
transport: Transport.TCP,
options: {
host: '127.0.0.1',
port: 3011,
},
});
}
public async addContract(data: AddContractDTO) {
const res = await this.client.send<any,any>('contract/addContract', data).toPromise();
console.log(res);
if(!res.success){
throw new BadRequestException(res)
}
return goodResponse(res.data.data,'Contract created');
}
}
Ответ №1:
Вы не можете вызвать службу напрямую. Вам нужно создать контроллер (для привязки к конечной точке), который затем может вызывать службу.
Примеры можно найти в документации NestJS (https://docs.nestjs.com/microservices/basics ).