# API 操作文档 - 笑话管理系统 ## 基础信息 - **API 地址**: `http://<服务器IP>:8001` - **默认管理员**: `admin` / `admin123` - **认证方式**: JWT Bearer Token --- ## 一、登录获取 Token ```bash curl -X POST http://<服务器IP>:8001/api/auth/login \ -H "Content-Type: application/json" \ -d '{"username": "admin", "password": "admin123"}' ``` **返回示例**: ```json { "access_token": "eyJhbGciOiJIUzI1NiIs...", "token_type": "bearer" } ``` --- ## 二、提交笑话 ```bash curl -X POST http://<服务器IP>:8001/api/admin/jokes \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '{ "title": "笑话标题", "content": "笑话内容正文", "type_id": 1, "crowd_id": 2 }' ``` | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | `title` | string | 是 | 笑话标题 | | `content` | string | 是 | 笑话正文 | | `type_id` | int | 否 | 类型 ID(查分类列表获取) | | `crowd_id` | int | 否 | 人群 ID(查分类列表获取) | 提交后 status 默认为 `pending`(待审核)。 --- ## 三、查询分类 ID ```bash # 查看所有类型 curl http://<服务器IP>:8001/api/categories/types # 查看所有人群 curl http://<服务器IP>:8001/api/categories/crowds ``` --- ## 四、完整脚本示例(批量提交) ```bash #!/bin/bash SERVER="http://192.168.1.10:8001" # 登录获取 Token TOKEN=$(curl -s -X POST "$SERVER/api/auth/login" \ -H "Content-Type: application/json" \ -d '{"username":"admin","password":"admin123"}' \ | python -c "import sys,json; print(json.load(sys.stdin)['access_token'])") echo "Token: $TOKEN" # 批量提交笑话 jokes=( '{"title":"笑话1","content":"内容1","type_id":1,"crowd_id":2}' '{"title":"笑话2","content":"内容2","type_id":1,"crowd_id":null}' ) for joke in "${jokes[@]}"; do curl -X POST "$SERVER/api/admin/jokes" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d "$joke" echo "" done ``` --- ## 五、其他管理接口 ### 查询笑话列表 ```bash curl -H "Authorization: Bearer " \ "http://<服务器IP>:8001/api/admin/jokes?page=1&page_size=20&status=pending" ``` ### 审核通过 ```bash curl -X PUT http://<服务器IP>:8001/api/admin/jokes/batch-approve \ -H "Content-Type: application/json" \ -H "Authorization: Bearer " \ -d '[1, 2, 3]' ``` ### 删除笑话 ```bash curl -X DELETE http://<服务器IP>:8001/api/admin/jokes/1 \ -H "Authorization: Bearer " ``` --- ## 六、注意事项 1. 将 `<服务器IP>` 替换为实际的服务器 IP 地址 2. 确保服务器防火墙已放行 **8001** 端口 3. Token 有过期时间,过期后需重新登录获取