9.2 KiB
API 接口测试文档
基础信息
- Base URL:
http://localhost:8080/api - 认证方式: JWT Bearer Token
- 请求格式: JSON (Content-Type: application/json)
认证接口
1. 用户登录
接口: POST /login
请求参数:
{
"username": "admin",
"password": "admin123"
}
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
说明:
- 登录成功后返回 JWT Token
- Token 有效期 24 小时(可在配置文件中修改)
- 后续请求需在 Header 中携带:
Authorization: Bearer {token}
2. 用户注册
接口: POST /register
请求参数:
{
"username": "testuser",
"password": "123456",
"real_name": "张三",
"id_card": "110101199001011234",
"email": "test@example.com",
"phone": "13800138000"
}
响应示例:
{
"code": 200,
"msg": "success",
"data": null
}
考试管理接口
3. 获取考试列表
接口: GET /exams
请求参数:
page=1&pageSize=10
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"list": [
{
"id": 1,
"title": "2024 年春季英语等级考试",
"code": "ENG-2024-001",
"subject": "英语",
"exam_location": "北京市朝阳区考试中心",
"exam_fee": 150.00,
"max_candidates": 500,
"status": 1,
"start_time": "2024-04-15T09:00:00Z",
"end_time": "2024-04-15T11:00:00Z"
}
],
"total": 10,
"page": 1,
"pageSize": 10
}
}
4. 获取考试详情
接口: GET /exams/:id
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"id": 1,
"title": "2024 年春季英语等级考试",
"description": "本次考试为英语等级考试...",
"start_time": "2024-04-15T09:00:00Z",
"end_time": "2024-04-15T11:00:00Z",
"registration_start": "2024-03-01T00:00:00Z",
"registration_end": "2024-04-01T23:59:59Z",
"max_candidates": 500,
"exam_fee": 150.00,
"exam_location": "北京市朝阳区考试中心",
"subject": "英语",
"status": 1
}
}
5. 创建考试(需管理员权限)
接口: POST /exams
Header: Authorization: Bearer {token}
请求参数:
{
"title": "2024 年夏季数学竞赛",
"code": "MATH-2024-001",
"description": "全市高中数学竞赛",
"start_time": "2024-07-15 09:00:00",
"end_time": "2024-07-15 12:00:00",
"registration_start": "2024-06-01 00:00:00",
"registration_end": "2024-07-01 23:59:59",
"max_candidates": 300,
"exam_fee": 100.00,
"exam_location": "北京市第一中學",
"subject": "数学"
}
6. 更新考试
接口: PUT /exams/:id
请求参数:
{
"title": "更新的考试名称",
"max_candidates": 400
}
7. 删除考试
接口: DELETE /exams/:id
响应: 删除成功返回空数据
报名管理接口
8. 创建报名
接口: POST /registrations
Header: Authorization: Bearer {token}
请求参数:
{
"exam_id": 1,
"remark": "首次参加,请多关照"
}
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"id": 1,
"user_id": 2,
"exam_id": 1,
"status": 0,
"payment_status": 0,
"remark": "首次参加,请多关照"
}
}
状态码说明:
- 0: 待审核
- 1: 已通过
- 2: 已拒绝
- 3: 已取消
9. 获取报名列表
接口: GET /registrations
请求参数:
user_id=2&exam_id=1&page=1&pageSize=10&status=0
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"list": [
{
"id": 1,
"user_id": 2,
"exam_id": 1,
"status": 1,
"payment_status": 1,
"ticket_number": "TKT11712345678",
"exam_seat": "A-001",
"audit_comment": "审核通过",
"user": {
"username": "testuser",
"real_name": "张三"
},
"exam": {
"title": "2024 年春季英语等级考试",
"code": "ENG-2024-001"
}
}
],
"total": 1
}
}
10. 审核报名(管理员)
接口: PUT /registrations/:id/audit
请求参数:
{
"status": 1,
"comment": "审核通过,请按时参加考试"
}
说明:
- status: 1-通过,2-拒绝
- comment: 审核意见
11. 更新报名信息
接口: PUT /registrations/:id
请求参数:
{
"remark": "更新备注信息"
}
12. 取消报名
接口: DELETE /registrations/:id
考试通知接口
13. 获取通知列表
接口: GET /notices
请求参数:
exam_id=1&page=1&pageSize=10
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"list": [
{
"id": 1,
"exam_id": 1,
"title": "关于考试时间的通知",
"content": "原定于...",
"type": 2,
"publish_time": "2024-03-15T10:00:00Z"
}
],
"total": 5
}
}
通知类型:
- 1: 普通通知
- 2: 重要通知
- 3: 紧急通知
14. 创建通知(管理员)
接口: POST /notices
请求参数:
{
"exam_id": 1,
"title": "考场规则说明",
"content": "考生须知...",
"type": 1
}
成绩管理接口
15. 录入成绩(管理员)
接口: POST /scores
请求参数:
{
"user_id": 2,
"exam_id": 1,
"score": 85.5,
"total_score": 100,
"remark": "成绩优秀"
}
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"id": 1,
"user_id": 2,
"exam_id": 1,
"score": 85.5,
"total_score": 100,
"pass": true,
"rank": 0,
"published": false
}
}
16. 批量录入成绩(管理员)
接口: POST /scores/batch
请求参数:
[
{
"user_id": 2,
"score": 85.5,
"total_score": 100
},
{
"user_id": 3,
"score": 92.0,
"total_score": 100
}
]
说明:
- exam_id 从查询参数或当前上下文中获取
- 自动计算是否及格(>=60 分)
17. 查询个人成绩
接口: GET /scores/exam/:exam_id
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"id": 1,
"user_id": 2,
"exam_id": 1,
"score": 85.5,
"total_score": 100,
"pass": true,
"rank": 5,
"published": true
}
}
18. 获取成绩列表(管理员)
接口: GET /scores
请求参数:
exam_id=1&page=1&pageSize=10
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"list": [
{
"id": 1,
"user_id": 2,
"exam_id": 1,
"score": 85.5,
"total_score": 100,
"pass": true,
"rank": 1,
"published": true,
"user": {
"username": "testuser",
"real_name": "张三"
}
}
],
"total": 50
}
}
19. 发布成绩(管理员)
接口: PUT /scores/:id/publish
说明: 发布后学生才能查看成绩
20. 删除成绩
接口: DELETE /scores/:id
用户信息接口
21. 获取当前用户信息
接口: GET /user/info
Header: Authorization: Bearer {token}
响应示例:
{
"code": 200,
"msg": "success",
"data": {
"id": 2,
"username": "testuser",
"real_name": "张三",
"email": "test@example.com",
"phone": "13800138000",
"role": "user",
"status": 1
}
}
22. 更新用户信息
接口: PUT /user/info
请求参数:
{
"real_name": "李四",
"email": "lisi@example.com",
"phone": "13900139000"
}
错误码说明
| 错误码 | 说明 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权(Token 无效或过期) |
| 403 | 无权限 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
Postman 使用示例
1. 设置环境变量
在 Postman 中设置环境变量:
base_url: http://localhost:8080token: {{login 后自动填充}}
2. Pre-request Script
在 Collection 的 Pre-request Script 中添加:
// 自动添加 Token
pm.request.headers.add({
key: 'Authorization',
value: 'Bearer ' + pm.environment.get('token')
});
3. Test Scripts
在登录接口的 Tests 中添加:
// 自动保存 Token
var jsonData = pm.response.json();
if (jsonData.code === 200) {
pm.environment.set('token', jsonData.data.token);
}
cURL 测试示例
登录
curl -X POST http://localhost:8080/api/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
获取考试列表
curl -X GET "http://localhost:8080/api/exams?page=1&pageSize=10"
创建考试(需要 Token)
curl -X POST http://localhost:8080/api/exams \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-d '{
"title": "测试考试",
"code": "TEST-001",
"start_time": "2024-05-01 09:00:00",
"end_time": "2024-05-01 11:00:00"
}'
文档版本: v1.0
最后更新: 2024-03-20