Files
goalfylearning-admin/internal/api/README.md

180 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# API 层
本模块负责HTTP API的实现提供RESTful接口。
## 功能特性
- RESTful API设计
- JWT认证中间件
- 跨域支持
- 请求日志记录
- 统一错误处理
- 参数验证
## 模块结构
```
api/
├── middlewares/ # 中间件
│ ├── auth.go # 认证中间件
│ ├── cors.go # 跨域中间件
│ └── logging.go # 日志中间件
├── handlers/ # 请求处理器
│ ├── auth_handler.go # 认证处理器
│ ├── user_handler.go # 用户处理器
│ ├── role_handler.go # 角色处理器
│ └── menu_handler.go # 菜单处理器
├── routes/ # 路由配置
│ └── routes.go # 路由设置
└── README.md # 说明文档
```
## API 接口
### 认证接口
```
POST /api/auth/login # 用户登录
POST /api/auth/logout # 用户登出
GET /api/profile # 获取用户信息
PUT /api/profile # 更新用户信息
PUT /api/change-password # 修改密码
```
### 用户管理接口(管理员)
```
POST /api/admin/users # 创建用户
GET /api/admin/users # 获取用户列表
GET /api/admin/users/:id # 获取用户详情
PUT /api/admin/users/:id # 更新用户
DELETE /api/admin/users/:id # 删除用户
PUT /api/admin/users/:id/status # 更新用户状态
```
### 角色管理接口(管理员)
```
POST /api/admin/roles # 创建角色
GET /api/admin/roles # 获取角色列表
GET /api/admin/roles/:id # 获取角色详情
PUT /api/admin/roles/:id # 更新角色
DELETE /api/admin/roles/:id # 删除角色
PUT /api/admin/roles/:id/status # 更新角色状态
```
### 菜单管理接口(管理员)
```
POST /api/admin/menus # 创建菜单
GET /api/admin/menus # 获取菜单列表
GET /api/admin/menus/tree # 获取菜单树
GET /api/admin/menus/:id # 获取菜单详情
PUT /api/admin/menus/:id # 更新菜单
DELETE /api/admin/menus/:id # 删除菜单
PUT /api/admin/menus/:id/status # 更新菜单状态
PUT /api/admin/menus/:id/sort # 更新菜单排序
```
## 请求示例
### 用户登录
```bash
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "admin",
"password": "password"
}'
```
### 获取用户列表
```bash
curl -X GET "http://localhost:8080/api/admin/users?page=1&size=10&username=admin" \
-H "Authorization: Bearer your-jwt-token"
```
### 创建用户
```bash
curl -X POST http://localhost:8080/api/admin/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-jwt-token" \
-d '{
"username": "newuser",
"email": "newuser@example.com",
"password": "password",
"nickname": "新用户",
"role": "user"
}'
```
## 响应格式
### 成功响应
```json
{
"code": 200,
"message": "操作成功",
"data": {
"id": 1,
"username": "admin",
"email": "admin@example.com"
}
}
```
### 分页响应
```json
{
"code": 200,
"message": "操作成功",
"data": [...],
"total": 100,
"page": 1,
"size": 10
}
```
### 错误响应
```json
{
"code": 400,
"message": "参数错误"
}
```
## 中间件
### 认证中间件
验证JWT token将用户信息存储到上下文中。
### 管理员中间件
验证用户是否具有管理员权限。
### 跨域中间件
处理跨域请求,支持预检请求。
### 日志中间件
记录HTTP请求日志包括请求方法、路径、状态码、响应时间等。
## 错误处理
所有API都遵循统一的错误处理模式
- 参数验证错误400 Bad Request
- 认证失败401 Unauthorized
- 权限不足403 Forbidden
- 资源不存在404 Not Found
- 服务器错误500 Internal Server Error