5.7 公开接口与短链访问
5.7 公开接口
以下接口不需要登录态或 Bearer Token。公开写入类接口会通过短期签名 token 限制写入范围。
健康检查
GET /health
GET /health/simple
/health:返回详细信息(数据库、缓存连通性、版本号)。/health/simple:只返回200 OK,适合 LB 探活。
安装向导
安装未完成时访问任意 URL 都会被重定向到安装页,安装完成后以下接口失效。
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /install/index |
安装页 |
| POST | /api/v1/install/test-db |
测试数据库连通性 |
| POST | /api/v1/install |
执行安装 |
首页
GET /
根据配置决定返回首页 HTML、重定向到管理后台,或跳转到默认短链接。
登录
POST /api/v1/auth/login
见「5.1 认证方式」。
短链接跳转
GET /{code}
- 命中:返回 302,
Location指向original_url、高级路由目标 URL,或 A/B 测试变体目标 URL。 - 过期 / 禁用:渲染错误模板或返回 404。
- 记录点击事件(异步)。
- 命中运行中的 A/B 测试时,目标 URL 会追加
_dwz_abt查询参数,用于后续转化反馈。 code只允许[a-zA-Z0-9\-_.]+字符。
A/B 跳转示例:
https://example.com/page-a?_dwz_abt=<feedback_token>A/B 测试转化反馈
POST /api/v1/public/ab_test_feedback
Content-Type: application/json
{
"feedback_token": "<_dwz_abt 参数值>",
"event_id": "order-202401150001",
"value": 99.9,
"currency": "CNY",
"metadata": {
"plan": "pro"
},
"occurred_at": "2024-01-15T10:30:00Z"
}
说明:
feedback_token必须来自短链 A/B 跳转目标 URL 的_dwz_abt参数。event_id在同一 A/B 测试内幂等,重复提交不会重复计入转化。value可用于累计转化价值,必须大于等于 0。currency会被服务端转成大写。metadata用于保存订单号、套餐、渠道等业务附加信息。- token 无效、被篡改、过期,或绑定的实验/变体不存在时返回 401。
成功响应:
{
"code": 0,
"message": "success",
"data": {
"id": 10,
"duplicate": false,
"workspace_id": 1,
"ab_test_id": 1,
"variant_id": 2,
"short_link_id": 5,
"session_id": "ab_1_5_xxx",
"event_id": "order-202401150001"
}
}落地页自动回传示例:
const token = new URLSearchParams(location.search).get('_dwz_abt');
if (token) {
await fetch('https://your-domain.com/api/v1/public/ab_test_feedback', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
feedback_token: token,
event_id: 'order-202401150001',
value: 99.9,
currency: 'CNY',
metadata: {
order_id: '202401150001',
plan: 'pro'
}
})
});
}短链接预览
GET /preview/{code}
返回短链接对应的 HTML 预览页,展示目标 URL、标题、缩略图等,不触发点击统计。适合用户确认后再跳转的场景。