5.4 A/B 测试接口
A/B 测试接口
A/B 测试绑定一条短链,并包含至少两个目标 URL 变体。管理接口需要认证,写操作要求 owner 或 admin;访问短链时系统选择变体并生成反馈 Token,落地页再调用公开反馈接口回传转化。
管理接口
| 方法 | 路径 | 说明 |
|---|---|---|
POST |
/api/v1/ab_tests |
创建测试 |
GET |
/api/v1/ab_tests |
分页列表,可按短链和状态筛选 |
GET |
/api/v1/ab_tests/:id |
详情 |
PUT |
/api/v1/ab_tests/:id |
更新基本信息 |
DELETE |
/api/v1/ab_tests/:id |
删除 |
POST |
/api/v1/ab_tests/:id/start |
启动,可传 start_time |
POST |
/api/v1/ab_tests/:id/stop |
停止,可传 end_time |
GET |
/api/v1/ab_tests/:id/statistics |
点击、转化、日趋势与获胜变体 |
创建示例
{
"short_link_id": 42,
"name": "落地页标题实验",
"description": "比较 A 与 B 的注册转化",
"traffic_split": "weighted",
"variants": [
{
"name": "A",
"target_url": "https://example.com/a",
"weight": 60,
"is_control": true
},
{
"name": "B",
"target_url": "https://example.com/b",
"weight": 40,
"is_control": false
}
]
}traffic_split 支持 equal、weighted、custom;变体至少两项。weighted 和 custom 要求每项权重在 1–100 且总和恰好为 100;equal 由服务自动分配。
转化反馈
公开端点:
POST /api/v1/public/ab_test_feedback
Content-Type: application/json
{
"feedback_token": "<跳转上下文中的签名 token>",
"event_id": "order-20260721-0001",
"value": 199.0,
"currency": "CNY",
"metadata": {"channel": "web"},
"occurred_at": "2026-07-21T12:00:00+08:00"
}feedback_token 和 event_id 必填。event_id 用于幂等去重;重复回传会返回 duplicate=true,不会重复计数。不要自行构造或修改反馈 Token。
浏览器落地页应从跳转后保留的 _dwz_abt 上下文中取得 Token,并在真实业务成功后回传。不要把普通页面访问当作转化。
统计接口
除测试自身统计外,还提供:
| 方法 | 路径 |
|---|---|
GET |
/api/v1/ab_test_click_statistics |
GET |
/api/v1/ab_test_click_statistics/analysis |
GET |
/api/v1/ab_test_click_statistics/:id/variants |
支持 ab_test_id、variant_id、short_link_id、IP、国家、城市和日期等筛选。日期格式为 YYYY-MM-DD。