14 个稳定版本

1.1.2 2023年5月17日
1.1.1 2023年4月7日
1.0.10 2023年3月7日
1.0.8 2023年1月25日
1.0.4 2022年11月30日

#1062 in 网页编程

MIT 许可证

13KB
174

Actix Analytics

一个轻量级 API 分析解决方案,包括仪表盘。

入门指南

1. 生成 API 密钥

前往 https://apianalytics.dev/generate 通过一键生成您独特的 API 密钥。此密钥用于监控您的 API 服务器,并应私密存储。它还用于查看您的 API 分析仪表盘和数据。

2. 将中间件添加到您的 API

将我们的轻量级中间件添加到您的 API 中。几乎所有处理都由我们的服务器完成,因此对您的 API 性能的影响最小。

cargo add actix-analytics
use actix_web::{get, web, Responder, Result};
use serde::Serialize;
use actix_analytics::Analytics;

#[derive(Serialize)]
struct JsonData {
    message: String,
}

#[get("/")]
async fn index() -> Result<impl Responder> {
    let json_data = JsonData {
        message: "Hello World!".to_string(),
    };
    Ok(web::Json(json_data))
}

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    use actix_web::{App, HttpServer};

    HttpServer::new(|| {
        App::new()
            .wrap(Analytics::new(<API-KEY>))  // Add middleware
            .service(index)
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

3. 查看您的分析

您的 API 现在将记录并存储所有有效路由上的传入请求数据。您可以使用以下两种方法查看已记录的数据

  1. 通过我们的仪表盘上的可视化和统计数据
  2. 通过直接访问我们的数据 API

您可以在多个 API 中使用相同的 API 密钥,但所有数据将显示在同一仪表盘中。我们建议为每个您想进行分析的额外 API 服务器生成一个新的 API 密钥。

仪表盘

前往 https://apianalytics.dev/dashboard 并粘贴您的 API 密钥以访问您的仪表盘。

演示: https://apianalytics.dev/dashboard/demo

Dashboard

数据 API

所有请求的已记录数据可以通过我们的 REST API 访问。只需将 API 密钥设置在头部 https://apianalytics-server.com/api/data 作为 X-AUTH-TOKEN 发送 GET 请求。

Python
import requests

headers = {
 "X-AUTH-TOKEN": <API-KEY>
}

response = requests.get("https://apianalytics-server.com/api/data", headers=headers)
print(response.json())
Node.js
fetch("https://apianalytics-server.com/api/data", {
  headers: { "X-AUTH-TOKEN": <API-KEY> },
})
  .then((response) => {
    return response.json();
  })
  .then((data) => {
    console.log(data);
  });
cURL
curl --header "X-AUTH-TOKEN: <API-KEY>" https://apianalytics-server.com/api/data
参数

您可以通过在请求中提供 URL 参数来过滤您的数据。

  • date - 指定请求发生的特定日期 (YYYY-MM-DD)
  • dateFrom - 指定请求发生的日期范围的下限(YYYY-MM-DD
  • dateTo - 指定请求发生的日期范围的上限(YYYY-MM-DD
  • ipAddress - 客户端的IP地址字符串
  • status - 响应的整数状态码
  • location - 客户端的两位位置代码

示例

curl --header "X-AUTH-TOKEN: <API-KEY>" https://apianalytics-server.com/api/data?dateFrom=2022-01-01&dateTo=2022-06-01&status=200

监控(即将推出)

即将推出主动API监控。我们的服务器将定期ping您的API端点以监控正常运行时间和响应时间。您可以订阅可选的电子邮件警报,在端点故障时通知您。

Monitoring

数据和安全性

所有数据均安全存储,符合欧盟通用数据保护条例(GDPR)。

对于对您的API的任何请求,记录的数据限于以下内容

  • 客户端请求的路径
  • 客户端IP地址
  • 客户端操作系统
  • 客户端浏览器
  • 请求方法(GET、POST、PUT等)
  • 请求时间
  • 状态码
  • 响应时间
  • API主机名
  • API框架(FastAPI、Flask、Express等)

收集的数据仅用于填充您的分析仪表板。所有存储的数据都是匿名的,API密钥是您与记录的请求数据之间唯一的联系。如果您丢失了API密钥,您将无法访问您的API分析。

数据删除

您可以在任何时候通过访问https://apianalytics.dev/delete并输入您的API密钥来删除与您的API密钥关联的所有存储数据。

API密钥及其关联的API请求数据将在6个月不活跃后删除。

贡献

欢迎贡献、问题和功能请求。

  • 分叉它(https://github.com/tom-draper/api-analytics
  • 创建您的功能分支(git checkout -b my-new-feature
  • 提交您的更改(git commit -am 'Add some feature'
  • 推送到分支(git push origin my-new-feature
  • 创建新的拉取请求

依赖关系

~18-33MB
~576K SLoC