5.4 A/B 测试接口

A/B 测试接口

A/B 测试绑定一条短链,并包含至少两个目标 URL 变体。管理接口需要认证,写操作要求 owneradmin;访问短链时系统选择变体并生成反馈 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 支持 equalweightedcustom;变体至少两项。weightedcustom 要求每项权重在 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_tokenevent_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_idvariant_idshort_link_id、IP、国家、城市和日期等筛选。日期格式为 YYYY-MM-DD

相关章节:公开接口统计与归因