如何从任何前端应用程序调用nestjs微服务?

问题描述

我已经制作了一个nestJS微服务包和用于联系微服务的单独的nestJS客户端应用程序。下面给出的是客户端应用程序中使用的代码。在微服务中,使用的方法是@messagePattern,并且可以使用。我的问题是,前端应用程序如何不通过客户端直接与微服务联系,以及如何在微服务中设置招摇或直接从邮递员进行测试?

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');

    }
}

解决方法

您不能直接致电服务。您需要创建一个控制器(以绑定到端点),然后可以调用该服务。

示例可在NestJS文档(https://docs.nestjs.com/microservices/basics)中找到。