纯 nodejs 项目如何调用 nestjs 微服务?

我们知道 nestjs http 服务器调用 nestjs 微服务是简单的,已经封装好了,
那么脱离nestjs 环境,普通的 nodejs 环境 如何调用微服务呢?

阅读 1.4k
avatarAI BotBETA

要在纯Node.js项目中调用NestJS微服务,你可以使用HTTP客户端库来发送HTTP请求。以下是一种可能的方法:

首先,确保你已经安装了axiosnode-fetch等HTTP客户端库。你可以使用npm(Node.js包管理器)来安装它们:

npm install axios

或者

npm install node-fetch

接下来,在你的Node.js项目中,导入你选择的HTTP客户端库并使用它来发送HTTP请求到NestJS微服务。以下是一个使用axios的示例:

const axios = require('axios');

async function callNestJsMicroservice(url) {
  try {
    const response = await axios.get(url);
    console.log(response.data);
  } catch (error) {
    console.error('Error calling NestJS microservice:', error);
  }
}

// 调用NestJS微服务的URL
const nestJsMicroserviceUrl = 'http://localhost:5000/api/some-endpoint';
callNestJsMicroservice(nestJsMicroserviceUrl);

在上面的示例中,我们使用了axios库的get方法来发送GET请求到NestJS微服务的指定URL。你可以根据需要使用其他HTTP方法(如POST、PUT、DELETE等)。请确保将url变量替换为你要调用的NestJS微服务的实际URL。

这是一个简单的示例,你可以根据你的实际需求进行修改和扩展。注意,你还需要处理异常和错误情况,这只是一个基本示例。

1 个回答

从 stackoverflow 找到一个答案.https://stackoverflow.com/questions/55942795/call-my-nestjs-microservice-with-nodejs-app

import { ClientTCP } from "@nestjs/microservices";
import { lastValueFrom } from "rxjs";
async function bootstrap() {
  const client = new ClientTCP({
    host: "localhost",
    port: 3001,
  });
  await client.connect();
  const pattern = { cmd: "math:wordcount" };
  const data = "12314";

  const result = await lastValueFrom(client.send("math:wordcount", data)).catch(
    (e) => {
      console.log(`e`, e);
    }
  );
  console.log(result);
}
bootstrap();

当然安装的话需要安装这些包,不然会缺少依赖...:

    "@nestjs/common": "^10.3.0",
    "@nestjs/core": "^10.3.0",
    "@nestjs/microservices": "^10.3.0"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进