模块说明
vote 提供投票活动能力:浏览投票、查看选项与票数排行、提交投票(服务端按 IP 做重复投票校验)。
鉴权级别:全部可选(匿名可参与;登录不改变业务规则)。
接口一览
| 方法 | URL | 鉴权 | 说明 |
|---|---|---|---|
| GET | /api/vote |
可选 | 投票列表 |
| GET | /api/vote/{id} |
可选 | 投票介绍(含总票数) |
| GET | /api/vote/options |
可选 | 选项列表(含票数分布) |
| GET | /api/vote/rank |
可选 | 票数排行 |
| GET | /api/vote/option |
可选 | 选项详情 |
| POST | /api/vote/poll |
可选 | 提交投票 |
投票列表 GET /api/vote
参数 page;返回 title、vote_list、total、pager。
投票介绍 GET /api/vote/{id}
{
"code": "OK",
"message": "",
"data": {
"title": "投票介绍",
"vote": { "id": 1, "name": "...", "image": "...二维码...", "...": "" },
"count_vote": 100
},
"errors": {},
"request_id": "9f2a5c8e1b3d7f40"
}
| 场景 | 响应 |
|---|---|
id <= 0 |
422 INVALID_PARAMS(illegal) |
| 投票不存在 | 404 NOT_FOUND |
vote.image为二维码地址(由qrcode字段映射而来,供分享场景使用)。
选项列表 GET /api/vote/options
| 参数 | 必填 | 说明 |
|---|---|---|
vote_id |
是 | 投票 ID(缺失 → 422) |
page |
否 | 页码,默认 1 |
返回 title、vote、option_list(选项含票数)、count_vote、total、pager。调用会累计一次投票页面浏览量。
票数排行 GET /api/vote/rank
参数 vote_id;返回 title、vote、option_list(按票数排序);不存在 404。
选项详情 GET /api/vote/option
| 参数 | 必填 | 说明 |
|---|---|---|
vote_id |
是 | 投票 ID |
option_id |
是 | 选项 ID |
返回 title(选项名)、vote、vote_option;参数缺失 422,不存在 404。
提交投票 POST /api/vote/poll
| 参数 | 必填 | 说明 |
|---|---|---|
option_id |
是 | 选项 ID |
{
"code": "OK",
"message": "投票成功",
"data": { "count": 101 },
"errors": {},
"request_id": "9f2a5c8e1b3d7f40"
}
data.count为该选项最新票数;- 重复投票(按 IP)等业务拒绝 →
422 BUSINESS_RULE_VIOLATION。
注意事项
- 投票重复校验基于客户端 IP(服务端判定),跨设备以 IP 为准;
- 选项列表/排行接口会记录浏览计数,客户端请避免在无展示场景下频繁预取。