发布一个npm包,用于监控页面中的所有API请求的状态和结果

本文介绍如何通过创建npm包request-interceptor,利用monkey patches技术监控页面中的XMLHttpRequest和fetch请求状态及结果,实现非侵入式的请求监控。详细说明了注册、取消监听以及针对fetch请求的监听方法。
摘要由CSDN通过智能技术生成

  在前端监控系统中,或者其他场景下,如果我们需要监控当前页面下所有请求状态。可能通常请求下,我们会选择在请求的回调中去处理。这种做法的缺点就是会侵入具体的业务代码。在通常的监控中,监控部分的代码和业务部分的代码是分离的。此外,如果存在很多的请求需要被监听,通过侵入具体业务代码,为了减少代码的重复,也需要封装监听请求的逻辑。

  本文通过monkey patches的方法实现了一个request-interceptor包,可以按需求监听请求。

  该npm包的项目地址为:https://github.com/forthealllight/request-intercept 欢迎使用。

  • 获取API请求的状态和结果
  • monkey patches实现监控XMLHttpRequest请求
  • monkey patches实现监控fetch请求

本文的原文在我的博客中:https://github.com/forthealllight/blog/issues/40

欢迎star


一、获取API请求和结果

  获取请求的方式包含了fetch和XMLHttpRequest。比如下面是一个XMLHttpRequest请求的例子:

var client = new XMLHttpRequest();
client.open("POST","http://10.12.72.16:8080/extraInfo" );
client.setRequestHeader("Content-Type", "application/json; charset=utf-8");
client.send(JSON.stringify({
   }));

  通常我们会通过client上出发的readystatechange来判断请求的状态以及得到请求的响应结果:

client.onreadystatechange = function () {
   
if (client .readyState==4 &&client.status==200) {
   
    console.log(client.responseText);
要使用 Deveco 编写一个服务器监控程序,您需要先安装其相关依赖: ```bash npm install deveco axios ``` 接下来,创建一个 Vue.js 项目并在其引入 Deveco 和 Axios: ```bash vue create my-project cd my-project npm install deveco axios ``` 然后,创建一个服务器监控组件 `ServerMonitor.vue`,用于展示服务器的 CPU 使用率和内存使用情况,并发送 Ajax 请求获取实时数据: ```vue <template> <div class="server-monitor"> <div class="cpu-usage"> <h2>CPU Usage</h2> <div class="bar"> <div class="bar-inner" :style="{ width: cpuUsage + '%' }"></div> </div> <div class="value">{{ cpuUsage }}%</div> </div> <div class="mem-usage"> <h2>Memory Usage</h2> <div class="bar"> <div class="bar-inner" :style="{ width: memUsage + '%' }"></div> </div> <div class="value">{{ memUsage }} MB</div> </div> </div> </template> <script> import axios from "axios"; export default { name: "ServerMonitor", data() { return { cpuUsage: 0, memUsage: 0, }; }, mounted() { // 定时获取 CPU 使用率和内存使用情况 setInterval(() => { axios.get("/api/server/usage").then((response) => { this.cpuUsage = response.data.cpuUsage; this.memUsage = response.data.memUsage; }); }, 1000); }, }; </script> <style> .server-monitor { display: flex; justify-content: space-between; align-items: center; width: 100%; height: 100%; padding: 20px; } .cpu-usage, .mem-usage { display: flex; flex-direction: column; align-items: center; } .bar { width: 100%; height: 30px; background-color: #f3f3f3; border-radius: 10px; overflow: hidden; } .bar-inner { height: 100%; background-color: #32c787; transition: width 0.5s ease; } .value { margin-top: 10px; font-size: 24px; font-weight: bold; } </style> ``` 以上代码创建了一个 `ServerMonitor` 组件,其含两个子组件,用于展示 CPU 使用率和内存使用情况。在 `mounted` 钩子函数,使用 `setInterval` 方法定时发送 Ajax 请求获取 CPU 和内存使用情况数据。 然后,在 `main.js` 配置服务器 API 路由和跨域请求: ```javascript const express = require("express"); const cors = require("cors"); const app = express(); app.use(cors()); app.get("/api/server/usage", (req, res) => { const cpuUsage = Math.round(Math.random() * 100); const memUsage = Math.round(Math.random() * 1000); res.json({ cpuUsage, memUsage }); }); app.listen(3000, () => { console.log("Server running at http://localhost:3000"); }); ``` 以上代码创建了一个简单的 Express 服务器,其定义了一个 GET 路由 `/api/server/usage`,用于返回随机生成的 CPU 和内存使用情况数据。 最后,在 `App.vue` 引入 `ServerMonitor` 组件并将其展示出来: ```vue <template> <div class="app"> <ServerMonitor /> </div> </template> <script> import ServerMonitor from "./components/ServerMonitor.vue"; export default { name: "App", components: { ServerMonitor, }, }; </script> <style> .app { width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; } </style> ``` 现在您可以使用 `npm run serve` 命令启动开发服务器并在浏览器查看您的服务器监控程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值