怎么将NodeJS请求路由到另一个NodeJS应用?

本教程将介绍如何将NodeJS请求路由到另一个NodeJS应用?的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。

怎么将NodeJS请求路由到另一个NodeJS应用? 教程 第1张

问题描述

您好,我正在尝试构建一个非常简单的"API网关"来演示一个小规模的微服务项目。我正在使用NodeJS和Express,我想编写一个非常简单的面向公共的API网关服务器来将请求路由到我的不同微服务。例如,假设我有微服务A、B和C。我希望对localhost:3000/api/A的请求转到微服务A并返回结果,然后所有其他对localhost:3000/api/B的请求转到微服务B并返回结果,依此类推。我想写这个,而不是使用Nginx,有人能帮我理解一下我怎么做到这一点吗?(我的大多数其他"微服务"也是NodeJS/Express API)

我可以用代码获得一个快速简单的示例吗?我希望看到对Google的GET请求,然后客户端能够获得GET请求。(使用其他库或模块也很酷!:d)

推荐答案

您可以在端口3001上运行B,在3002上运行C。

然后在端口3000上分配A的所有请求。

您可以在A中使用http客户端(如axios)来请求B或C。

示例

A.js

const express = require('express')
const axios = require('axios')

const app = express()

app.get('/api/B', (req, res) => {
  axios.get('http://localhost:3001/dosomething', {
 params: {...req.query, name: 'Device A'}, //Fetch datas from params
  }).then(result => {
 res.send(result)
  })
})

app.get('/api/C', (_, res) => {
  axios.get('http://localhost:3002/dosomething').then(result => {
 res.send(result)
  })
})

app.listen(3000, () => console.log('On 3000'))

B.js

const express = require('express')
const app = express()

app.get('/dosomething', (req, res) => {
  const data = req.query
  //Do something with data fetched here you know...
  res.send('No worry, I will do something for ' + data.name)
})

app.listen(3001, () => console.log('On 3001'))

好了关于怎么将NodeJS请求路由到另一个NodeJS应用?的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。