背景
在现代 Web 应用程序中,HTTP 事件和指标记录是一项至关重要的任务。在前端项目中,我们需要追踪下列指标:
- 客户端浏览器类型和版本
- 访问者的IP地址
- 响应时间
- HTTP状态码
- 和其他信息
为了实现这些记录,开发者需要使用一个好的服务器框架和监控组件。在这篇文章中,我们将探讨如何使用 Hapi 和 Good 实现 HTTP 事件和指标记录。
Hapi
开发者们对于 Hapi 的印象通常是高度可扩展的、模块化的、具有良好的插件支持以及出色的 API 风格。Hapi 可以用于构建 Web 应用程序和 API。
这里,我们将讨论如何使用 Hapi 实现 HTTP 事件和指标记录。首先,我们需要用 npm
安装 Hapi。
npm install --save hapi
接下来,我们需要创建一个简单的 Hapi 服务器。
const Hapi = require('hapi'); const server = new Hapi.Server({ port: 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello, World!'; } }); server.start().then(() => { console.log('Server running at:', server.info.uri); });
这个简单的服务器将返回 Hello, World!
,它监听在 localhost:3000
上。现在,我们需要添加 Good 插件来实现 HTTP 事件和指标记录。
Good
Good 是一个用于将 Hapi 事件和指标输出到多个目标(包括控制台、日志文件、InfluxDB、StatsD 等)的插件。我们可以用 npm
安装它。
npm install --save good
接下来,我们需要修改服务器代码。首先,我们需要加载 Good 日志记录器插件,它将输出日志消息到控制台。
const Good = require('good'); const server = new Hapi.Server({ port: 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hello, World!'; } }); server.register({ plugin: Good, options: { reporters: { console: [{ module: 'good-console' }, 'stdout'] } } }).then(() => { server.start().then(() => { console.log(`Server running at: ${server.info.uri}`); }); }).catch((error) => { console.error('Error:', error); });
接下来,我们需要添加 Good 插件的配置选项。下面是一个示例配置:
{ "reporters": { "console": [{ "module": "good-squeeze", "name": "Squeeze", "args": [{ "response": "*", "log": "*" }] }, { "module": "good-console" }, "stdout"] } }
这个配置将输出所有的请求和响应事件以及服务器日志。Good 插件将这些事件和信息输出到控制台或其他目标上。
在提交请求之后,Good 将会返回一个包含请求ID的响应。请求ID可以用于检索该请求的详细信息。下面是一个示例响应:
{ "request": { "method": "GET", "path": "/", "headers": { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", "connection": "keep-alive", "accept": "*/*", "accept-encoding": "gzip, deflate, br" }, "body": null }, "response": { "statusCode": 200, "payload": "Hello, World!", "headers": {} }, "log": [] }
总结
在本文中,我们学习了如何使用 Hapi 和 Good 实现 HTTP 事件和指标记录。我们首先创建了一个简单的 Hapi 服务器,然后添加了 Good 插件以输出事件和指标。最后,我们学习了如何解析 Good 插件输出的请求ID以检索详细信息。
随着 Web 应用程序的复杂性不断增加,HTTP 事件和指标记录也变得越来越重要。通过使用 Hapi 和 Good,我们可以轻松地实现这些记录。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a090f5add4f0e0ff8d6bd0