Files
leaudit-platform-frontend/auth_doc/API接口速查表.md
T
2025-11-18 11:06:24 +08:00

436 lines
8.3 KiB
Markdown

# API接口速查表
**版本**: v1.0
**日期**: 2025-11-17
**后端地址**: `http://172.16.0.55:8073`
---
## 📌 认证接口
### 1. 统一登录接口
**端点**: `POST /auth/login`
**支持两种方式**:
#### OAuth登录
```typescript
POST /auth/login
Content-Type: application/json
{
"userInfo": {
"sub": "user123", // 必填
"username": "zhangsan", // 可选
"nickname": "张三", // 可选
"email": "...", // 可选
"phone_number": "...", // 可选
"ou_id": "dept001", // 可选
"ou_name": "技术部", // 可选
"is_leader": false // 可选
},
"expiresIn": 3600, // 必填
"area": "梅州" // 可选,仅首次创建时保存
}
```
#### 密码登录
```typescript
POST /auth/login
Content-Type: application/json
{
"username": "000", // 实际是sub字段
"password": "admin06111"
}
```
**成功响应**:
```json
{
"success": true,
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIs...",
"token_type": "Bearer",
"expires_in": 3600,
"user_info": {
"user_id": "5",
"username": "admin",
"nick_name": "管理员",
"email": null,
"phone_number": null,
"ou_id": "default",
"ou_name": "未分配部门",
"is_leader": true,
"user_role": "admin",
"sub": "000"
}
}
}
```
**失败响应**:
```json
{
"success": false,
"error": "用户名或密码错误"
}
```
---
## 📌 RBAC路由接口
### 2. 获取用户路由
**端点**: `GET /user/routes``GET /rbac/user/routes`
**请求头**:
```
Authorization: Bearer {JWT_TOKEN}
```
**响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"user_id": 6,
"username": "001",
"routes": [
{
"id": 1,
"route_path": "/",
"route_name": "Layout",
"component": "layout/index",
"route_title": "入口页",
"icon": "el-icon-s-home",
"sort_order": 1,
"is_hidden": false,
"is_cache": true,
"children": [...]
}
]
}
}
```
### 3. 检查路由权限
**端点**: `GET /rbac/check-route`
**请求参数**:
```
route_path: /system/users
```
**请求头**:
```
Authorization: Bearer {JWT_TOKEN}
```
**响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"route_path": "/system/users",
"has_access": true
}
}
```
### 4. 清除路由缓存
**端点**: `POST /rbac/clear-routes-cache`
**请求头**:
```
Authorization: Bearer {JWT_TOKEN}
```
**响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"message": "路由缓存已清除"
}
}
```
---
## 📌 PostgREST数据接口
### 通用规则
**所有数据表访问格式**:
```
GET /{table_name} # 查询
POST /{table_name} # 创建
PATCH /{table_name}?{filter} # 更新
DELETE /{table_name}?{filter} # 删除
```
**请求头**:
```
Authorization: Bearer {JWT_TOKEN}
Content-Type: application/json
```
### PostgREST过滤操作符
| 操作符 | 说明 | 示例 |
|-------|------|------|
| `eq` | 等于 | `id=eq.5` |
| `neq` | 不等于 | `status=neq.1` |
| `gt` | 大于 | `id=gt.10` |
| `gte` | 大于等于 | `id=gte.10` |
| `lt` | 小于 | `id=lt.100` |
| `lte` | 小于等于 | `id=lte.100` |
| `like` | 模糊匹配 | `title=like.*合同*` |
| `ilike` | 不区分大小写模糊匹配 | `title=ilike.*word*` |
| `in` | 在列表中 | `id=in.(1,2,3)` |
| `is` | 是NULL | `deleted_at=is.null` |
| `not.is` | 不是NULL | `deleted_at=not.is.null` |
### 查询参数
| 参数 | 说明 | 示例 |
|-----|------|------|
| `select` | 选择字段 | `select=id,title,created_at` |
| `order` | 排序 | `order=created_at.desc` |
| `limit` | 限制数量 | `limit=20` |
| `offset` | 偏移量 | `offset=40` |
---
## 📌 常用数据表
### documents(文档表)
**查询文档列表**:
```typescript
GET /documents?user_id=eq.5&status=eq.0&select=id,title,created_at&order=created_at.desc&limit=20&offset=0
```
**创建文档**:
```typescript
POST /documents
Content-Type: application/json
{
"title": "测试文档",
"user_id": 5,
"status": 0
}
```
**更新文档**:
```typescript
PATCH /documents?id=eq.123
Content-Type: application/json
{
"title": "新标题",
"status": 1
}
```
**删除文档**:
```typescript
DELETE /documents?id=eq.123
```
### sso_users(用户表)
**查询用户**:
```typescript
GET /sso_users?sub=eq.000&select=id,username,nick_name,email
```
**注意**: 普通用户无法直接访问 `sso_users` 表,需要通过特殊接口。
### roles(角色表)
**查询所有角色**:
```typescript
GET /roles?is_system_role=eq.true&select=id,role_key,role_name,priority&order=priority.desc
```
### user_role(用户-角色关联表)
**查询用户角色**:
```typescript
GET /user_role?user_id=eq.5&select=role_id
```
### sys_routes(路由表)
**查询所有路由**:
```typescript
GET /sys_routes?status=eq.0&deleted_at=is.null&select=id,route_path,route_title&order=sort_order
```
### role_route(角色-路由关联表)
**查询角色路由**:
```typescript
GET /role_route?role_id=eq.1&select=route_id
```
---
## 📌 完整示例
### 登录 + 获取路由 + 查询数据
```typescript
import axios from 'axios';
const API_BASE = 'http://172.16.0.55:8073';
// 1. 登录
const login = async () => {
const response = await axios.post(`${API_BASE}/auth/login`, {
username: '001',
password: 'gdyc06111'
});
const { access_token, user_info } = response.data.data;
localStorage.setItem('token', access_token);
return { token: access_token, userInfo: user_info };
};
// 2. 获取路由
const fetchRoutes = async (token: string) => {
const response = await axios.get(`${API_BASE}/user/routes`, {
headers: { 'Authorization': `Bearer ${token}` }
});
return response.data.data.routes;
};
// 3. 查询文档(普通用户)
const fetchDocuments = async (token: string, userId: string) => {
const response = await axios.get(`${API_BASE}/documents`, {
params: {
user_id: `eq.${userId}`, // 只查自己的数据
status: `eq.0`,
select: 'id,title,created_at',
order: 'created_at.desc',
limit: 20,
offset: 0
},
headers: { 'Authorization': `Bearer ${token}` }
});
return response.data;
};
// 4. 创建文档
const createDocument = async (token: string, userId: string) => {
const response = await axios.post(`${API_BASE}/documents`, {
title: '测试文档',
user_id: parseInt(userId),
status: 0
}, {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
}
});
return response.data;
};
// 使用示例
const main = async () => {
// 登录
const { token, userInfo } = await login();
console.log('登录成功:', userInfo);
// 获取路由
const routes = await fetchRoutes(token);
console.log('用户路由:', routes);
// 查询文档
const docs = await fetchDocuments(token, userInfo.user_id);
console.log('文档列表:', docs);
// 创建文档
const newDoc = await createDocument(token, userInfo.user_id);
console.log('新建文档:', newDoc);
};
main();
```
---
## 📌 错误码对照表
| HTTP状态码 | 说明 | 处理方式 |
|-----------|------|---------|
| 200 | 成功 | 正常处理 |
| 400 | 请求参数错误 | 检查请求参数 |
| 401 | 未授权/Token过期 | 重新登录 |
| 403 | 无权限访问 | 提示用户无权限 |
| 404 | 资源不存在 | 检查路径是否正确 |
| 500 | 服务器错误 | 联系后端开发人员 |
---
## 📌 测试账号
| 用户名 | 密码 | 角色 | 路由数 | 说明 |
|--------|------|------|-------|------|
| 000 | admin06111 | 超级管理员 | 29 | 所有权限 |
| 001 | gdyc06111 | 普通用户 | 19 | 有限权限 |
| jy001 | jyyc0814 | 系统管理员 | 29 | 管理员权限 |
| mz001 | mzyc06111 | 系统管理员 | 29 | 管理员权限 |
| yf001 | yfyc06111 | 系统管理员 | 29 | 管理员权限 |
| cz001 | czyc06111 | 系统管理员 | 29 | 管理员权限 |
---
## 📌 快速链接
- **完整对接文档**: `docs/RBAC/前端完整对接文档_RBAC与PostgREST.md`
- **快速开始**: `docs/RBAC/前端快速开始_5分钟集成.md`
- **用户管理**: `docs/RBAC/用户管理完整指南.md`
- **RBAC总结**: `docs/RBAC/RBAC系统使用总结.md`
---
**创建时间**: 2025-11-17
**维护者**: Claude Code