前端偷偷搞搞微服务

缘起


引用某大佬的一句话,前端现在可以考虑外翻,外翻其他技术方向,所以小编偷偷翻个微服务。目前微服务有很多成熟的技术,node也一样。但是本文不是教大家如何使用框架,而是教大家在没有微服务框架的情况下,如何自己实现一套。为了方便前端童鞋,我们就以node为例子,为了少写点代码,偷偷懒,我们就以express作为框架。

微服务的理解


假如现在没有任何框架,需要你实现微服务,你会如何处理。童鞋们思考几分钟,继续往下看。

首先,我们可以想到页面上,点击事件等方式,调用接口1。然后接口1触发,返回数据。这个时候微服务来了,我们接口1不再直接查库,而是通过分发等一系列处理,调用不在这个服务上接口2。最后,通过多次调用,数据链式返回到最初的接口1,接口1再返回给前端页面数据。

看到这里各位童靴是不是有思路了,很简单,express起两个服务,服务A和服务B,服务A负责可视化路由的管理,和外面接口请求的处理,服务B才是返回核心数据。

上代码


由于时间关系,我们就快进到代码的环节,上几段主要的代码

服务1:

const express = require("express");
const app = express();
const { getTestData } = require("./api/test.js");
app.use(express.static("htmlRes"));
app.use(express.json());
app.get("/", function (req, res) {
  res.writeHead(200, { "Content-Type": "text/html" }); //html方式输出
  res.end();
});
app.post("/test", getTestData);
app.listen(3000, () => console.log("Example app listening on port 3000!"));

其实没必要解释,很简单是不是,我们打开localhost:3000,出现页面,然后触发/test请求,然后我们看看test请求如何写的

const axios = require("axios");

exports.getTestData = async (req, res) => {
  const data = await axios.post("http://localhost:3001/getTest");
  console.log(data.data);
  res.send({
    name: "test",
    desc: "这是main返回的数据",
    ...data.data,
  });
};

大家可以看到,通过同步的方式,我们去请求另外一个服务2的getTest接口,拿到数据进行二次组装返回

我们再来看看服务2的getTest方法

exports.getTestData = (req, res) => {
  res.send({
    micro: "很高兴见到大家",
  });
};

按照代码,最后输出以下内容,证明我们的微服务成功了

{
	desc: "这是main返回的数据"
	micro: "很高兴见到大家"
	name: "test"
}

验证


我们打开localhost:3000页面,然后触发请求,看到下图
在这里插入图片描述
成功了,是不是很容易啊,哈哈,思路就是这么简单,框架无非就是更多的通用性和各种可扩展性,核心就是这个。

具体项目大家可以到这里看:
https://github.com/zjscy666/nodeMicroService

尾声


美好的时光总是短暂的,如果大家喜欢小编的文章,欢迎点赞转发打赏,我们下期见。

猜你喜欢

转载自blog.csdn.net/zjscy666/article/details/125351994