Umami UV / PV 统计显示
本文最后更新于 2024年5月13日 14:55
Umami 官方文档并没有提供 UV 和 PV 展示的 API,但是我们可以通过 Umami 的访客 API 获取到网站的访问量和访问人数。
本文将介绍如何通过 Umami 的 API 获取网站的 UV 和 PV 数据,并在页面上展示。
这是本站的 Umami 访问统计页面,显示了每日的访问量和访问人数,链接:https://umami.ovvv.top/share/SYu8qUKmty52PW9w/blog
我们在前文介绍过如何安装 Umami:Umami 安装使用教程
下面我们将新建用户,通过 Umami 的 API 调用,编写一个简单的页面来显示 Umami 的 UV, PV 访问情况。本文使用类似于 postman
的 API 测试工具来发送 GET
, POST
请求。你也可以使用 hoppscotch
、curl
等工具。
1. 新建 View only
权限的用户
点击 Settings
-> 点击 Users
-> 点击 Create user
-> 填写账号密码,Role
选择 View only
-> 点击 Save
肯定有读者很疑惑,为什么不直接调用 Umami 的 API 获取数据,而是要额外创建一个账户。
因为我的博客是 静态开源无服务器 的,所有代码都展示在前端,包括 API 调用。而 Umami 的 admin
API 权限太大了[1],如果使用 admin
权限的 API Token,那么这个 token 可以获取、修改、删除所有网站的数据,会有严重的安全隐患。
所以我们需要创建一个 View only
权限的用户,使用这个 低权限的用户
的 API Token 来访问我们的浏览量等数据。
2. 新建 Team
并添加用户和网站
点击 Settings
-> 点击 Teams
-> 点击 Create team
-> 填写名称 -> 点击 Save
Teams
中选择你刚创建的 Team 点击 view
-> 复制 Access code
,点击 Websites
,点击 Add website
添加你想共享的网站。
如果你的网站之前属于个人账户,那么你可以将其转移到团队账户上。
换一个浏览器登录 Umami(使用 View only
权限的用户) -> Settings
-> Teams
-> Join team
-> 输入 Access code
-> Join
-> 如果没有出错的话,点击 Dashboard
就可以看到你刚刚添加的网站了。
3. 获取 View only
用户的 API Token
根据 Umami 的文档[2],我们可以通过以下方式获取 API Token:
1 |
|
例如 你的网站地址为 example.com
,那么你需要使用 View only
的账户密码向 https://example.com/api/auth/login
发送一个 POST
请求,请求体为:
1 |
|
如果成功,你应该会得到以下的结果:
1 |
|
保存 token 值,并在所有请求中发送带 Bearer <token>
值的 Authorization
标头。请求标头应该如下所示:
1 |
|
4. 发送请求获取数据
先分析一下官方文档的 API 接口[3]:GET /api/websites/{websiteId}/stats
有两个必填的 查询参数:startAt
和 endAt
,都是 Unix 毫秒时间戳,表示开始时间和结束时间
websiteId
和 startAt
需要我们自己获取
websiteId
可以在 Dashboard
-> 点击你网站的 View details
-> 浏览器栏的地址 https://example.com/websites/{websiteId}
中找到 {websiteId}
startAt
可发送 GET
请求到 https://example.com/api/websites/{websiteId}
,带上上文获取的请求头
1 |
|
在返回结果中找到 createdAt
字段,这个字段就是 startAt
的值,也就是你的网站创建时间,数据的开始时间
5. 编写页面
代码是看到木木的博客[4]而有灵感,而评论区下面的 Nick[5] 提供了相对正确的思路,我在他代码的基础上进行了改进,如删除无用的参数和优化步骤等。代码如下,修改你对应的参数即可运行:
1 |
|