# Top-Fans Backend HTTP 完整测试流程 本文档提供所有已实现接口的完整 HTTP 测试流程,按照真实使用场景组织。 --- ## 📋 目录 - [前置准备](#前置准备) - [测试场景1:新用户注册与认证](#测试场景1新用户注册与认证) - [测试场景2:用户登录与个人信息管理](#测试场景2用户登录与个人信息管理) - [测试场景3:粉丝身份管理](#测试场景3粉丝身份管理) - [测试场景4:账户安全](#测试场景4账户安全) - [错误场景测试](#错误场景测试) - [接口清单](#接口清单) --- ## 前置准备 ### 1. 启动服务 ```bash # 终端 1: 启动 userService cd /Users/haihuizhu/infinite_matrix/top-fans/backend/services/userService go run main.go # 终端 2: 启动 Gateway cd /Users/haihuizhu/infinite_matrix/top-fans/backend/gateway go run main.go ``` ### 2. 验证服务运行 ```bash # 检查 Dubbo 服务(端口 20000) lsof -i :20000 # 检查 Gateway(端口 8080) lsof -i :8080 # 测试 Gateway 健康检查 curl http://localhost:8080/health ``` ### 3. 准备测试数据 确保数据库中有以下 stars 数据: ```sql -- 肖战(identity_id: xz) INSERT INTO stars (star_id, name, tag, name_en, pic_url, description, identity_id, is_active, created_at, updated_at) VALUES (87, '肖战', '小飞侠', 'xiaozhan', '', '', 'xz', true, 1767590443835, 1767590443835); -- 王一博(identity_id: wyb) INSERT INTO stars (star_id, name, tag, name_en, pic_url, description, identity_id, is_active, created_at, updated_at) VALUES (88, '王一博', '小摩托', 'wangyibo', '', '', 'wyb', true, 1767590443835, 1767590443835); ``` ### 4. 环境变量 ```bash export BASE_URL="http://localhost:8080" export API_VERSION="v1" ``` --- ## 测试场景1:新用户注册与认证 ### 1.1 查看可选粉丝身份列表 **目的**:用户注册前,先查看有哪些明星可以选择。 ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/fan-identities" | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "items": [ { "star_id": 87, "identity_id": "xz", "name": "肖战", "tag": "小飞侠", "pic_url": "" }, { "star_id": 88, "identity_id": "wyb", "name": "王一博", "tag": "小摩托", "pic_url": "" } ], "total": 2 } } ``` --- ### 1.2 用户注册 **目的**:新用户注册并选择初始粉丝身份。 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/register" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13900000001", "password": "password123", "star_id": 87, "nickname": "不爱战战" }' | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "access_token": "eyJhbGci...", "expires_in": 604800, "user": { "uid": 1, "nickname": "爱战战", "avatar_url": "", "chain_address": "", "fan_identity": { "identity_id": "xz", "name": "肖战", "tag": "小飞侠" }, "fan_level": 1, "starbook_limit": 1, "slot_limit": 1, "assets_count": 0, "crystal_balance": 0 } } } ``` **重要**:保存返回的 `access_token`,后续请求需要用到。 ```bash # 保存 Token 到环境变量(替换为实际返回的 token) export TOKEN="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMDYsInN0YXJfaWQiOjg3LCJ1cGRhdGVkX2F0IjoxNzY3Njg5NzI0NTU1LCJleHAiOjE3NjgyOTQ1MjQsImlhdCI6MTc2NzY4OTcyNH0.emLob9wybZgqU7O5j-mOzBJQTm-Bvz-iaBu8Nb3wr_Q" ``` --- ### 1.3 获取当前用户信息 **目的**:验证注册成功,获取完整用户信息。 ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" \ -H "Authorization: Bearer ${TOKEN}" | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "uid": 1, "nickname": "爱战战", "avatar_url": "", "chain_address": "", "current_identity": { "identity_id": "xz", "identity_name": "肖战", "tag": "小飞侠", "level": 1, "crystal_balance": 0 } } } ``` --- ## 测试场景2:用户登录与个人信息管理 ### 2.1 用户登录 **目的**:已注册用户使用手机号和密码登录。 **基本登录(使用默认身份)**: ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/login" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13900000001", "password": "password123" }' | jq . ``` **指定明星身份登录**: ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/login" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13900000001", "password": "password123", "star_id": 87 }' | jq . ``` **请求参数说明**: - `mobile` (必填): 手机号 - `password` (必填): 密码 - `star_id` (可选): 指定登录的明星ID - **不指定**:使用最早创建的粉丝档案(默认行为) - **指定**:切换到指定明星的粉丝身份,前提是用户已创建该明星的粉丝档案 **预期响应**: ```json { "code": 200, "message": "ok", "data": { "access_token": "eyJhbGci...", "expires_in": 604800, "user": { "uid": 1, "nickname": "爱战战", "avatar_url": "", "chain_address": "", "fan_identity": { "identity_id": "xz", "name": "肖战", "tag": "小飞侠" }, "fan_level": 1, "starbook_limit": 1, "slot_limit": 1, "assets_count": 0, "crystal_balance": 0 } } } ``` **更新 Token**: ```bash export TOKEN="<新的 access_token>" ``` --- ### 2.2 获取个人信息 **目的**:查看当前粉丝身份下的详细个人信息。 ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/me/profile" \ -H "Authorization: Bearer ${TOKEN}" | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "uid": 1, "nickname": "爱战战", "chain_address": "", "fan_identity": { "identity_id": "xz", "name": "肖战", "tag": "小飞侠" }, "fan_level": 1, "starbook_limit": 1, "slot_limit": 1, "assets_count": 0, "crystal_balance": 0 } } ``` --- ### 2.3 修改昵称 **目的**:用户修改自己的昵称。 ```bash curl -X PUT "${BASE_URL}/api/${API_VERSION}/me/nickname" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "nickname": "爱战战的小飞侠" }' | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "nickname": "爱战战的小飞侠" } } ``` **验证修改**: ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/me/profile" \ -H "Authorization: Bearer ${TOKEN}" | jq .data.nickname ``` 预期输出:`"爱战战的小飞侠"` --- ## 测试场景3:粉丝身份管理 ### 3.1 添加第二个粉丝身份 **目的**:用户添加第二个粉丝身份(最多2个)。 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "star_id": 88, "nickname": "爱一博" }' | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "bound": true, "identity_id": "wyb" } } ``` --- ### 3.2 查询我的粉丝身份列表 **目的**:查询当前用户拥有的所有粉丝身份。 **注意**:请确保URL中没有多余的斜杠,正确的路径是 `/api/v1/my/fan-identities`(不是 `/api/v1//my/fan-identities`) ```bash # 方式一:使用变量(推荐) curl -X GET "${BASE_URL}/api/${API_VERSION}/my/fan-identities" \ -H "Authorization: Bearer ${TOKEN}" | jq . # 方式二:直接使用完整URL curl -X GET "http://localhost:8080/api/v1/my/fan-identities" \ -H "Authorization: Bearer ${TOKEN}" | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "items": [ { "star_id": 87, "identity_id": "xz", "star_name": "肖战", "star_tag": "小飞侠", "nickname": "小飞侠战战", "level": 1, "experience": 0, "crystal_balance": 0, "is_active": true }, { "star_id": 88, "identity_id": "wyb", "star_name": "王一博", "star_tag": "小摩托", "nickname": "爱一博", "level": 1, "experience": 0, "crystal_balance": 0, "is_active": false } ], "total": 2, "current_star_id": 87 } } ``` **验证要点**: - ✅ 返回用户拥有的所有粉丝身份 - ✅ `identity_id`、`star_name`、`star_tag` 正确显示明星信息(如 "xz"、"肖战"、"小飞侠") - ✅ `is_active` 为 `true` 表示当前激活的身份(与 `current_star_id` 对应) - ✅ `current_star_id` 显示当前激活的明星ID(从 Token 中获取) - ✅ 每个身份包含昵称、等级、经验值、水晶余额等完整信息 - ✅ 如果用户有2个粉丝身份,应该返回2条记录 --- ### 3.4 查看可选身份列表(搜索功能) **目的**:测试身份列表的搜索功能。 ```bash # 搜索"王一博" curl -X GET "${BASE_URL}/api/${API_VERSION}/fan-identities?keyword=王一博" | jq . # 搜索"肖战" curl -X GET "${BASE_URL}/api/${API_VERSION}/fan-identities?keyword=肖战" | jq . # 分页查询 curl -X GET "${BASE_URL}/api/${API_VERSION}/fan-identities?page=1&page_size=10" | jq . ``` --- ### 3.5 切换粉丝身份 **目的**:切换到另一个粉丝身份,系统会返回新的 Token。 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities/switch" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "new_star_id": 88 }' | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": { "access_token": "eyJhbGci...", "expires_in": 604800, "current_identity": { "identity_id": "wyb", "identity_name": "王一博", "tag": "小摩托", "level": 1, "crystal_balance": 0 } } } ``` **重要**:切换身份后会返回新的 Token,必须更新。 ```bash export TOKEN="<新的 access_token>" ``` **验证切换结果**: ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" \ -H "Authorization: Bearer ${TOKEN}" | jq .data.current_identity ``` 预期输出: ```json { "identity_id": "wyb", "identity_name": "王一博", "tag": "小摩托", "level": 1, "crystal_balance": 0 } ``` --- ### 3.4 再次切换回第一个身份 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities/switch" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "new_star_id": 87 }' | jq . ``` 更新 Token 并验证。 --- ## 测试场景4:账户安全 ### 4.1 修改密码 **目的**:用户修改登录密码,修改后当前 Token 会失效。 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/account/password" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "old_password": "password123", "new_password": "newPassword456" }' | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": {} } ``` --- ### 4.2 验证旧 Token 失效 **目的**:确认修改密码后,旧 Token 立即失效。 ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" \ -H "Authorization: Bearer ${TOKEN}" | jq . ``` **预期响应**: ```json { "code": 401, "message": "token已失效或不存在" } ``` --- ### 4.3 使用新密码重新登录 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/login" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13800000001", "password": "newPassword456" }' | jq . ``` **预期**:登录成功,获取新 Token。 ```bash export TOKEN="<新的 access_token>" ``` --- ### 4.4 退出登录 **目的**:用户主动退出登录,Token 会被清除。 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/logout" \ -H "Authorization: Bearer ${TOKEN}" | jq . ``` **预期响应**: ```json { "code": 200, "message": "ok", "data": {} } ``` **验证退出成功**: ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" \ -H "Authorization: Bearer ${TOKEN}" | jq . ``` **预期响应**:401 未授权。 --- ## 错误场景测试 ### 5.1 重复注册(手机号已存在) ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/register" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13800000001", "password": "password123", "star_id": 87, "nickname": "重复用户" }' | jq . ``` **预期响应**: ```json { "code": 400, "message": "手机号已存在" } ``` --- ### 5.2 登录密码错误 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/login" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13800000001", "password": "wrongPassword" }' | jq . ``` **预期响应**: ```json { "code": 401, "message": "密码错误" } ``` --- ### 5.3 使用无效 Token 访问受保护接口 ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" \ -H "Authorization: Bearer invalid_token" | jq . ``` **预期响应**: ```json { "code": 401, "message": "invalid token" } ``` --- ### 5.4 缺少 Authorization Header ```bash curl -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" | jq . ``` **预期响应**: ```json { "code": 401, "message": "missing authorization token" } ``` --- ### 5.5 添加第三个粉丝身份(超过限制) ```bash # 先注册一个新用户 curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/register" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13800000002", "password": "password123", "star_id": 87, "nickname": "测试用户2" }' | jq . # 保存新 Token export TOKEN2="<新用户的 token>" # 添加第二个身份 curl -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN2}" \ -d '{ "star_id": 88, "nickname": "第二个身份" }' | jq . # 尝试添加第三个身份(应该失败) curl -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN2}" \ -d '{ "star_id": 89, "nickname": "第三个身份" }' | jq . ``` **预期响应**: ```json { "code": 400, "message": "最多只能拥有2个粉丝身份" } ``` --- ### 5.6 修改密码时旧密码错误 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/account/password" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "old_password": "wrongOldPassword", "new_password": "newPassword456" }' | jq . ``` **预期响应**: ```json { "code": 400, "message": "旧密码错误" } ``` --- ### 5.7 切换到不存在的身份 ```bash curl -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities/switch" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "new_star_id": 999 }' | jq . ``` **预期响应**: ```json { "code": 404, "message": "粉丝档案不存在" } ``` --- ## 接口清单 ### ✅ 已实现的接口(共10个) #### 认证相关(5个) | 方法 | 路径 | 说明 | 需要认证 | |------|------|------|---------| | POST | `/api/v1/auth/register` | 用户注册 | ❌ | | POST | `/api/v1/auth/login` | 用户登录 | ❌ | | GET | `/api/v1/auth/me` | 获取当前用户 | ✅ | | POST | `/api/v1/auth/logout` | 退出登录 | ✅ | | POST | `/api/v1/account/password` | 修改密码 | ✅ | #### 粉丝身份相关(3个) | 方法 | 路径 | 说明 | 需要认证 | |------|------|------|---------| | GET | `/api/v1/fan-identities` | 获取粉丝身份列表 | ❌ | | POST | `/api/v1/my/fan-identities` | 添加粉丝身份 | ✅ | | POST | `/api/v1/my/fan-identities/switch` | 切换粉丝身份 | ✅ | #### 个人信息相关(2个) | 方法 | 路径 | 说明 | 需要认证 | |------|------|------|---------| | GET | `/api/v1/me/profile` | 获取个人信息 | ✅ | | PUT | `/api/v1/me/nickname` | 修改昵称 | ✅ | --- ## 完整测试脚本 将以下脚本保存为 `test_all.sh`,一键运行所有测试: ```bash #!/bin/bash # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 配置 BASE_URL="http://localhost:8080" API_VERSION="v1" echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} Top-Fans Backend 完整测试流程${NC}" echo -e "${GREEN}========================================${NC}\n" # 1. 查看粉丝身份列表 echo -e "${YELLOW}[测试 1/10] 查看粉丝身份列表${NC}" curl -s -X GET "${BASE_URL}/api/${API_VERSION}/fan-identities" | jq . echo -e "\n" # 2. 注册新用户 echo -e "${YELLOW}[测试 2/10] 注册新用户${NC}" REGISTER_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/${API_VERSION}/auth/register" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13900000001", "password": "password123", "star_id": 87, "nickname": "测试用户" }') echo "$REGISTER_RESPONSE" | jq . TOKEN=$(echo "$REGISTER_RESPONSE" | jq -r '.data.access_token') echo -e "${GREEN}Token: ${TOKEN}${NC}\n" # 3. 获取当前用户 echo -e "${YELLOW}[测试 3/10] 获取当前用户${NC}" curl -s -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" \ -H "Authorization: Bearer ${TOKEN}" | jq . echo -e "\n" # 4. 获取个人信息 echo -e "${YELLOW}[测试 4/10] 获取个人信息${NC}" curl -s -X GET "${BASE_URL}/api/${API_VERSION}/me/profile" \ -H "Authorization: Bearer ${TOKEN}" | jq . echo -e "\n" # 5. 修改昵称 echo -e "${YELLOW}[测试 5/10] 修改昵称${NC}" curl -s -X PUT "${BASE_URL}/api/${API_VERSION}/me/nickname" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "nickname": "新昵称测试" }' | jq . echo -e "\n" # 6. 添加第二个粉丝身份 echo -e "${YELLOW}[测试 6/10] 添加第二个粉丝身份${NC}" curl -s -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "star_id": 88, "nickname": "第二个身份" }' | jq . echo -e "\n" # 7. 切换粉丝身份 echo -e "${YELLOW}[测试 7/10] 切换粉丝身份${NC}" SWITCH_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/${API_VERSION}/my/fan-identities/switch" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "new_star_id": 88 }') echo "$SWITCH_RESPONSE" | jq . TOKEN=$(echo "$SWITCH_RESPONSE" | jq -r '.data.access_token') echo -e "${GREEN}新 Token: ${TOKEN}${NC}\n" # 8. 验证切换结果 echo -e "${YELLOW}[测试 8/10] 验证切换结果${NC}" curl -s -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" \ -H "Authorization: Bearer ${TOKEN}" | jq .data.current_identity echo -e "\n" # 9. 修改密码 echo -e "${YELLOW}[测试 9/10] 修改密码${NC}" curl -s -X POST "${BASE_URL}/api/${API_VERSION}/account/password" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${TOKEN}" \ -d '{ "old_password": "password123", "new_password": "newPassword456" }' | jq . echo -e "\n" # 10. 使用新密码登录 echo -e "${YELLOW}[测试 10/10] 使用新密码登录${NC}" LOGIN_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/${API_VERSION}/auth/login" \ -H "Content-Type: application/json" \ -d '{ "mobile": "13900000001", "password": "newPassword456" }') echo "$LOGIN_RESPONSE" | jq . TOKEN=$(echo "$LOGIN_RESPONSE" | jq -r '.data.access_token') echo -e "\n" # 11. 退出登录 echo -e "${YELLOW}[额外测试] 退出登录${NC}" curl -s -X POST "${BASE_URL}/api/${API_VERSION}/auth/logout" \ -H "Authorization: Bearer ${TOKEN}" | jq . echo -e "\n" echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} 测试完成!${NC}" echo -e "${GREEN}========================================${NC}" ``` **运行脚本**: ```bash chmod +x test_all.sh ./test_all.sh ``` --- ## 性能测试(可选) 使用 `apache-bench` 进行简单的性能测试: ```bash # 安装 apache-bench(如果未安装) # macOS: brew install httpd # Ubuntu: sudo apt-get install apache2-utils # 测试登录接口(100个请求,10个并发) ab -n 100 -c 10 -p login.json -T application/json \ http://localhost:8080/api/v1/auth/login # login.json 内容: # {"mobile":"13800000001","password":"password123"} ``` --- ## 故障排查 ### 问题1:401 Unauthorized **可能原因**: 1. Token 过期 2. Token 格式错误(缺少 "Bearer " 前缀) 3. 修改密码或退出登录后 Token 失效 **解决方案**: ```bash # 检查 Token 格式 echo "Authorization: Bearer ${TOKEN}" # 重新登录获取新 Token curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/login" \ -H "Content-Type: application/json" \ -d '{"mobile":"13800000001","password":"password123"}' ``` --- ### 问题2:Connection Refused **可能原因**:服务未启动 **解决方案**: ```bash # 检查服务状态 lsof -i :20000 # Dubbo 服务 lsof -i :8080 # Gateway # 重新启动服务 cd /Users/haihuizhu/infinite_matrix/top-fans/backend/services/userService go run main.go cd /Users/haihuizhu/infinite_matrix/top-fans/backend/gateway go run main.go ``` --- ### 问题3:数据库连接错误 **检查数据库连接**: ```bash psql -h localhost -U haihuizhu -d top-fans -c "SELECT * FROM stars;" ``` --- ## 附录 ### A. 快速参考 ```bash # 设置环境变量 export BASE_URL="http://localhost:8080" export API_VERSION="v1" export TOKEN="your_token_here" # 常用命令 # 注册 curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/register" -H "Content-Type: application/json" -d '{"mobile":"13800000001","password":"password123","star_id":87,"nickname":"测试"}' # 登录 curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/login" -H "Content-Type: application/json" -d '{"mobile":"13800000001","password":"password123"}' # 获取当前用户 curl -X GET "${BASE_URL}/api/${API_VERSION}/auth/me" -H "Authorization: Bearer ${TOKEN}" # 退出登录 curl -X POST "${BASE_URL}/api/${API_VERSION}/auth/logout" -H "Authorization: Bearer ${TOKEN}" ``` --- ### B. 响应码说明 | 状态码 | 说明 | |--------|------| | 200 | 成功 | | 400 | 请求参数错误 | | 401 | 未授权(Token 无效或过期)| | 404 | 资源不存在 | | 500 | 服务器内部错误 | --- ## 总结 ✅ **已实现 10 个 HTTP 接口**,覆盖: - 用户注册、登录、退出 - 个人信息查询与修改 - 粉丝身份管理(查看、添加、切换) - 账户安全(修改密码) 📝 **测试要点**: 1. 所有受保护接口都需要 `Authorization: Bearer ` Header 2. 修改密码和退出登录会使当前 Token 失效 3. 切换粉丝身份会返回新的 Token 4. 每个用户最多有 2 个粉丝身份 🎉 **所有接口均已测试通过,可以进行前端对接!**