惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
小众软件
小众软件
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog
V
Visual Studio Blog
C
Check Point Blog
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42
量子位
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
M
MIT News - Artificial intelligence
爱范儿
爱范儿
B
Blog RSS Feed
MyScale Blog
MyScale Blog
H
Help Net Security
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
L
LangChain Blog
D
Docker

有呀

骑士活塞G4:冠军之心的觉醒 最近入手的几台心头好 组了一台 QNAS Mini 部署轻量友链朋友圈 给Memos页面增加编辑、归档及删除功能 开始连接,给Memos页面增加转发功能 给Memos页面添加发布框 所谓尼康战歌 富士直出日系治愈色调 使用 Umami Api 实现点赞统计 极简模式部署友链朋友圈 Memos页面添加Twikoo评论系统 使用Midjourney渲染游戏场景原画 富士的胶片感太好看了吧 一组76人美图 制作Big Sur风格的 icon 总有一些事,比总冠军更重要 一组收藏的原神原画壁纸 Hi,Hugo 在疫情中心武汉的这两个月 2020年流行设计风格探索 最近发现一个神器 入了多看电纸书 换了新主题 折叠屏会是智能设备的下一个形态么 Hackintosh 安装全攻略 平淡日子里的刺 Gridea主题:Mao Hi,Gridea 发一个 Office 365 家庭版的车
使用 Umami Api 显示统计数据
2023-06-08 · via 有呀

前言

最近在大家的疯狂安利下,捣鼓上了这样一款可以部署在Docker上的前端统计应用。特别是木木老师,更是直接放出了 《前端调用 Umami API 数据》 。不得不说,这个应用的可玩性成功的吸引了我的注意。

通过阅读官方的API文档,一番折腾下来,也是成功的在Memos页面中调用了umami统计的浏览数据。于是做个记录。

认证

如果想要获取Umami的数据,首先需要身份鉴权。

POST https://umami.mydomain.com/api/auth/login

通过上述接口,请求到一个TOKEN。获取任何数据都需要在请求的头部带上这个TOKEN,完成身份的认证。

这一步我的建议是通过API在线请求调试工具去完成,像 POSTMANhoppscotch

Hoppscotch

如果请求成功,会返回一个JSON

{
  "token": "eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A",
  "user": {
    "id": "cd33a605-d785-42a1-9365-d6cad3b7befd",
    "username": "your-username",
    "createdAt": "2020-04-20 01:00:00"
  }
}

如此一来,就请求到了TOKEN,建议将TOKEN存入 HUGO 里面的 config中,方便后面调用。

[params.umami]
    url = 'https://umami.mydomain.com'
    token = 'eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A'

浏览数据

获取文章的阅读数据,可以使用下面的这个API:

GET https://umami.mydomain.com/api/websites/{websiteId}/metrics

参数如下:

  • startAt: 起始时间
  • endAt: 终止时间
  • type: url

请求代码如下:

var umiTime = Date.parse(new Date()); //获取当前时间戳
var umiUrl = "https://umami.mydomain.com/api/websites/" + bbMemo.umiId + "/metrics?startAt=0&endAt=" + umiTime + "&type=url"

  fetch(umiUrl,{
    method: 'GET',
    mode: 'cors',
    cache: 'default',
    headers: {
      'Authorization': 'Bearer ' + umami.token,
      'Content-Type': 'application/json'
    }
  })
  .then(res => res.json()).then(resdata => {});

请求成功后,获取到的数据如下:

[
    {"x": "/", "y": 46}
    {"x": "/docs", "y": 17}
    {"x": "/download", "y": 14}
]

最后,通过遍历对比JSON中的地址与当前文章的URL地址,就可以获取到对应的浏览数据了。

最后

官方的API文档里面还有非常多的接口,大家可以根据自己的需求,按照上面的方法去获取自己想要的统计数据,就酱。