前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Umami API 使用方法

Umami API 使用方法

作者头像
为为为什么
发布2022-09-21 20:49:57
7190
发布2022-09-21 20:49:57
举报
文章被收录于专栏:又见苍岚又见苍岚

Umami 统计工具可以方便地统计站点访问信息,相关数据可以通过自带的 API 访问,本文记录使用方法。

背景

认证

  • 在执行大部分 API 之前需要向 Umami 做身份认证,拿到相应身份的 token
  • 之后使用该 token 执行 API,因此认证是前提
官方文档
代码语言:javascript
复制
POST /api/auth/login
First you need to get a token in order to make API requests. You need to make a POST request to the /api/auth/login endpoint with the following data:

{
  "username": "your-username",
  "password": "your-password"
}
If successful you should get a response like the following:

{
  "token": "eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A"
}

操作方法
Node.js

工程中新建 login.js 文件

代码语言:javascript
复制
var request = require('request');
var url="http://<your.umami.website>/api/auth/login";
var requestData={
    "username": "admin",
    "password": "xxxxxxxx"
};

httprequest(url,requestData);

function httprequest(url,data){
    console.log("hello world")
    request({
        url: url,
        method: "POST",
        json: true,
        headers: {
            "content-type": "application/json",
        },
        body: requestData
    }, function(error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body) // 请求成功的处理逻辑
        }else{
            console.log("failed")
            console.log(response.statusCode)
            console.log(error)
        }
    });
};
Python
  • 新建 login.py 文件
代码语言:javascript
复制
import requests
import json
url = "http://<your.umami.website>/api/auth/login"
requestData={
    "username": "admin",
    "password": "xxxxxxxx"
}
header = {
            "content-type": "application/json",
        }
res = requests.post(url=url, data=json.dumps(requestData), headers=header)
print(res.text)
  • 一定要加入 Headers
运行结果

<your.umami.website> 替换成你的 Umami url

运行就完了

成功后返回该用户的 token

代码语言:javascript
复制
{
token: 'eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWsadfkjasldkfj23405ujSDF654GD654asas6fdGSDGIUHOI453zTxZ0RMmJribpKsPAULlxDaiZQIUlrHU7Bo1S8u8hBrNUQ.Q2N4QfMFqHd7W2Pn0CYSNw.ps2KCcN4jnNVngJymTeHmUVhV9PBeMOmAH1Z3Qf11gKEMvQrSXGcWfgHJV188HmLZF_K3AlTIMl7Kf22HG8UI8VjwreMNQ_8BJ6s4zi8xB3ogBUr_DxXFqItRBnmNQH_fpS6AQvtgNA3mRq9ibOQMxCVio07R175BR2QzzxpeyDnhpMmqpW7cuZCD5DiiM4EOhXOaCnYkjRbl6NiXyQ.thwo7wexr3Vk3PSnSEXgyQ',
user: { user_id: 1, username: 'admin', is_admin: true }
}

执行 API

  • 拿到 token 后就可以执行 Umami 的 API 了
  • 需要在 headers 中加入:
代码语言:javascript
复制
headers={
    "Accept": "application/json",
    "Authorization": "Bearer <your token>"
}

  • 这里以 Websiteswebsite/{id}/stats 为例提供示例代码,供大家参考
Websites

该 API 可以返回 Umami 追踪的网站列表

创建 websites.js 文件

代码语言:javascript
复制
var request = require('request');
var url="http://<your.umami.website>/api/websites";
var requestData={};

var headers={
    "Accept": "application/json",
    "Authorization": "Bearer eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWsadfkjasldkfj23405ujSDF654GD654asas6fdGSDGIUHOI453zTxZ0RMmJribpKsPAULlxDaiZQIUlrHU7Bo1S8u8hBrNUQ.Q2N4QfMFqHd7W2Pn0CYSNw.ps2KCcN4jnNVngJymTeHmUVhV9PBeMOmAH1Z3Qf11gKEMvQrSXGcWfgHJV188HmLZF_K3AlTIMl7Kf22HG8UI8VjwreMNQ_8BJ6s4zi8xB3ogBUr_DxXFqItRBnmNQH_fpS6AQvtgNA3mRq9ibOQMxCVio07R175BR2QzzxpeyDnhpMmqpW7cuZCD5DiiM4EOhXOaCnYkjRbl6NiXyQ.thwo7wexr3Vk3PSnSEXgyQ"
}

httprequest(url,requestData);

function httprequest(url,data){
    console.log("hello world")
    request({
        url: url,
        method: "GET",
        json: true,
        headers: headers,
        body: requestData
    }, function(error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body) // 请求成功的处理逻辑
        }else{
            console.log("failed")
            console.log(response.statusCode)
            console.log(error)
        }
    });
};
Python
代码语言:javascript
复制
import requests
import json
url = "http://<your.umami.website>/api/websites"
data = {}
header={
    "Accept": "application/json",
    "Authorization": "Bearer eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWsadfkjasldkfj23405ujSDF654GD654asas6fdGSDGIUHOI453zTxZ0RMmJribpKsPAULlxDaiZQIUlrHU7Bo1S8u8hBrNUQ.Q2N4QfMFqHd7W2Pn0CYSNw.ps2KCcN4jnNVngJymTeHmUVhV9PBeMOmAH1Z3Qf11gKEMvQrSXGcWfgHJV188HmLZF_K3AlTIMl7Kf22HG8UI8VjwreMNQ_8BJ6s4zi8xB3ogBUr_DxXFqItRBnmNQH_fpS6AQvtgNA3mRq9ibOQMxCVio07R175BR2QzzxpeyDnhpMmqpW7cuZCD5DiiM4EOhXOaCnYkjRbl6NiXyQ.thwo7wexr3Vk3PSnSEXgyQ"
}
res = requests.get(url=url, data=json.dumps(data), headers=header)
print(res.text)
运行结果

<your.umami.website> 替换成你的 Umami url

运行成功后返回

代码语言:javascript
复制
[
  {
    website_id: 1,
    website_uuid: 'bd554kgfh1-xxxx-xxxx-xxxx-8sdf5uc0',
    name: '又见苍岚',
    created_at: '2022-07-15T01:16:31.266Z',
    user_id: 1,
    domain: 'www.zywvvd.com',
    share_id: 'r5xxxxxZ'
  }
]

website/{id}/stats
站点访问统计
  • 该 API 可以返回站点统计信息,也就是核心需求
Node.js
  • 创建 status.js 文件
代码语言:javascript
复制
var request = require('request');
var url="http://<your.umami.website>/api/website/1/stats?start_at=1350679719687&end_at=1990039038644";
var requestData={};

var headers={
    "Accept": "application/json",
    "Authorization": "Bearer eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWsadfkjasldkfj23405ujSDF654GD654asas6fdGSDGIUHOI453zTxZ0RMmJribpKsPAULlxDaiZQIUlrHU7Bo1S8u8hBrNUQ.Q2N4QfMFqHd7W2Pn0CYSNw.ps2KCcN4jnNVngJymTeHmUVhV9PBeMOmAH1Z3Qf11gKEMvQrSXGcWfgHJV188HmLZF_K3AlTIMl7Kf22HG8UI8VjwreMNQ_8BJ6s4zi8xB3ogBUr_DxXFqItRBnmNQH_fpS6AQvtgNA3mRq9ibOQMxCVio07R175BR2QzzxpeyDnhpMmqpW7cuZCD5DiiM4EOhXOaCnYkjRbl6NiXyQ.thwo7wexr3Vk3PSnSEXgyQ"
}

httprequest(url,requestData);

function httprequest(url,data){
    console.log("hello world")
    request({
        url: url,
        method: "GET",
        json: true,
        headers: headers,
        body: requestData
    }, function(error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body) // 请求成功的处理逻辑
        }else{
            console.log("failed")
            console.log(response.statusCode)
            console.log(error)
        }
    });
};
Python
代码语言:javascript
复制
import requests
import json
url = "http://101.43.39.125:3000/api/website/1/stats?start_at=1350679719687&end_at=1990039038644"
data = {}
header={
    "Accept": "application/json",
    "Authorization": "Bearer eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWsadfkjasldkfj23405ujSDF654GD654asas6fdGSDGIUHOI453zTxZ0RMmJribpKsPAULlxDaiZQIUlrHU7Bo1S8u8hBrNUQ.Q2N4QfMFqHd7W2Pn0CYSNw.ps2KCcN4jnNVngJymTeHmUVhV9PBeMOmAH1Z3Qf11gKEMvQrSXGcWfgHJV188HmLZF_K3AlTIMl7Kf22HG8UI8VjwreMNQ_8BJ6s4zi8xB3ogBUr_DxXFqItRBnmNQH_fpS6AQvtgNA3mRq9ibOQMxCVio07R175BR2QzzxpeyDnhpMmqpW7cuZCD5DiiM4EOhXOaCnYkjRbl6NiXyQ.thwo7wexr3Vk3PSnSEXgyQ"
}
res = requests.get(url=url, data=json.dumps(data), headers=header)
print(res.text)
运行结果

<your.umami.website> 替换成你的 Umami url

运行成功后返回 start_atend_at 时间段内的站点访问数量

时间以 1970年1月1日起算的毫秒数计量

运行成功后返回

代码语言:javascript
复制
{
  pageviews: { value: 3595, change: 3595 },
  uniques: { value: 1536, change: 1536 },
  bounces: { value: 1495, change: 1495 },
  totaltime: { value: 260752, change: 260752 }
}

链接访问统计

也可以用上述代码统计指定链接

只需在 url 后面家上参数即可

代码语言:javascript
复制
&url=<target url>

示例 url

代码语言:javascript
复制
var url="http://<your.umami.website>/api/website/1/stats?start_at=1350679719687&end_at=1990039038644&url=/";

表示访问我的主页的统计信息

成功后返回

代码语言:javascript
复制
{
  pageviews: { value: 440, change: 440 },
  uniques: { value: 192, change: 192 },
  bounces: { value: 249, change: 249 },
  totaltime: { value: 43290, change: 43290 }
}
当前活跃用户数量
  • url 替换为
代码语言:javascript
复制
http://<your.umami.website>/api/website/<id>/active
  • 即可
  • 其中 <id> 为网站编号
  • 正常运行时返回值:
代码语言:javascript
复制
[{"x":1}]

表示当前有一位活跃用户

其他 API

Docker 部署项目的话可以进入容器中

代码语言:javascript
复制
docker exec -it umami_umami_1 sh

进入目录 /app/.next/server/pages/api 查看相关可执行的 api 接口(文档写的不是所有 API)

也可以查阅 官方文档

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年8月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 认证
    • 官方文档
      • 操作方法
        • Node.js
        • Python
        • 运行结果
    • 执行 API
      • Websites
        • Python
        • 运行结果
      • website/{id}/stats
        • 站点访问统计
        • Node.js
        • Python
        • 运行结果
        • 链接访问统计
      • 当前活跃用户数量
        • 其他 API
        • 参考资料
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档