跳到主要内容

API接口规范

文档概述

本文档详细说明了邮轮穿舱件管理系统前端与后端API的交互规范和接口定义。基于对项目代码结构和API文档的分析,本文档涵盖了认证机制、HTTP请求处理、用户管理、工单管理等核心功能的接口规范。

参考文件来源:

1. 系统架构概述

1.1 技术栈分析

前端技术栈:

  • Vue.js 2.6.14 - 前端框架
  • Vue Router 3.6.5 - 路由管理
  • Vuex 3.6.2 - 状态管理
  • Vuetify 2.6.0 - UI组件库
  • Axios 1.7.5 - HTTP客户端
  • js-cookie 3.0.5 - Cookie管理

后端交互:

  • RESTful API架构
  • JWT认证机制
  • JSON数据格式
  • HTTP/HTTPS协议

1.2 系统架构图

flowchart TD
subgraph Frontend
A[Vue Components] --> B[Vue Router]
A --> C[Vuex Store]
B --> D[Views]
C --> D
D --> E[HTTP Service]
end

subgraph Backend
F[Authentication API] --> G[User Management API]
F --> H[Ticket Management API]
G --> I[Workpiece Management API]
H --> I
end

E --> F
E --> G
E --> H
E --> I

style A fill:#e1f5fe
style E fill:#f3e5f5
style F fill:#e8f5e8
style H fill:#fff3e0

2. HTTP请求处理规范

2.1 Axios配置

前端使用Axios作为HTTP客户端,配置如下:

// src/http/index.js 配置示例
const service = axios.create({
baseURL: process.env.VUE_APP_API || "",
withCredentials: false,
});

关键配置说明:

  • baseURL: 通过环境变量动态配置API基础路径
  • withCredentials: false: 不携带Cookie凭证
  • 请求拦截器自动添加JWT认证头
  • 响应拦截器处理统一错误响应

2.2 请求拦截器

// 请求拦截器 - 自动添加认证头
service.interceptors.request.use(
config => {
const token = Cookies.get('token');
if (token) {
config.headers['Authorization'] = `Bearer ${token}`;
}
return config;
},
error => {
return Promise.reject(error);
}
);

2.3 通用响应格式

成功响应格式:

{
"data": {},
"message": "操作成功"
}

错误响应格式:

{
"detail": "错误描述信息"
}

3. 认证接口规范

3.1 JWT认证流程

sequenceDiagram
participant User
participant Frontend
participant Backend
participant Cookie

User->>Frontend: 输入用户名密码
Frontend->>Backend: POST /token
Backend-->>Frontend: JWT Token
Frontend->>Cookie: 存储token
Frontend->>Backend: 后续请求携带token
Backend-->>Frontend: 认证数据

3.2 认证接口详情

3.2.1 获取JWT令牌

接口信息:

  • 方法: POST
  • 路径: /token
  • 认证: 不需要
  • 数据格式: application/x-www-form-urlencoded

请求参数:

参数名类型必填描述示例值
usernamestring用户名"admin"
passwordstring密码"password123"

响应示例:

{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer"
}

4. 用户管理接口规范

4.1 用户状态枚举

状态值描述
active激活状态
inactive非激活状态
suspended暂停状态
deleted已删除状态

4.2 用户接口列表

4.2.1 用户注册

接口信息:

  • 方法: POST
  • 路径: /users/register
  • 认证: 不需要

请求参数:

{
"username": "newuser",
"password": "password123",
"email": "user@example.com",
"sms": "13800138000",
"status": "active",
"openid": "wx_openid_123",
"is_system": false
}

4.2.2 用户列表查询

接口信息:

  • 方法: GET
  • 路径: /users/
  • 认证: 需要JWT

查询参数:

参数名类型必填描述限制
skipinteger跳过的记录数≥0
limitinteger返回的记录数1-1000

5. 工单管理接口规范

5.1 工单数据模型

5.1.1 请求数据模型 (TicketInSchema)

{
"ticket_type": "inspect",
"ticket_status": "open",
"target_workpiece": 123,
"ticket_from": "生产部门",
"ticket_tos": "维护部门",
"ticket_content": "设备需要检查",
"ticket_title": "设备检查工单",
"feedback_text": "检查完成",
"image_list": "image1.jpg,image2.jpg",
"reference_list": "ref1,ref2",
"created_by": 1
}

5.1.2 响应数据模型 (TicketOutSchema)

{
"ticket_id": 1,
"ticket_type": "inspect",
"ticket_status": "open",
"target_workpiece": 123,
"ticket_from": "生产部门",
"ticket_tos": "维护部门",
"ticket_content": "设备需要检查",
"ticket_title": "设备检查工单",
"feedback_text": "检查完成",
"image_list": "image1.jpg,image2.jpg",
"reference_list": "ref1,ref2",
"created_by": 1,
"updated_by": 2,
"created_at": "2024-01-01T10:00:00Z",
"updated_at": "2024-01-01T11:00:00Z"
}

5.2 工单类型和状态

工单类型:

类型说明
检查工单inspect用于设备检查、质量检查等
维护工单maintenance用于设备维护、修理等

工单状态:

状态说明
开放open工单已创建,等待处理
进行中running工单正在处理中
已关闭closed工单已完成并关闭
问题issue工单处理过程中遇到问题

5.3 工单接口详情

5.3.1 创建工单

接口信息:

  • 方法: POST
  • 路径: /ticket/
  • 认证: 需要

请求示例:

const ticketData = {
ticket_type: "inspect",
ticket_status: "open",
target_workpiece: 123,
ticket_from: "生产部门",
ticket_tos: "质检部门",
ticket_content: "产品质量检查",
ticket_title: "产品质量检查工单",
created_by: 1
};

5.3.2 获取工单列表

接口信息:

  • 方法: GET
  • 路径: /ticket/all
  • 认证: 需要

6. 错误处理规范

6.1 HTTP状态码说明

状态码说明处理建议
200请求成功正常处理响应数据
201创建成功处理新创建的资源
204删除成功无内容返回,确认操作成功
400请求参数错误检查请求参数格式和内容
401未授权/认证失败重新登录获取有效token
404资源不存在检查请求路径和资源ID
500服务器内部错误联系系统管理员

6.2 前端错误处理策略

// 统一错误处理示例
service.interceptors.response.use(
response => {
return response;
},
error => {
if (error.response.status === 401) {
// 跳转到登录页面
router.push('/login');
} else if (error.response.status === 500) {
// 显示服务器错误提示
showError('服务器内部错误,请稍后重试');
}
return Promise.reject(error);
}
);

7. 数据流架构

7.1 前端数据流图

flowchart LR
A[用户操作] --> B[Vue组件]
B --> C[Actions]
C --> D[HTTP请求]
D --> E[后端API]
E --> F[Mutations]
F --> G[State更新]
G --> H[组件重新渲染]
H --> A

style A fill:#e3f2fd
style D fill:#fce4ec
style E fill:#e8f5e8
style G fill:#fff3e0

7.2 组件依赖关系

graph TD
A[App.vue] --> B[Router]
A --> C[Store]
B --> D[LoginView.vue]
B --> E[HomeView.vue]
B --> F[Admin Views]
B --> G[Workpiece Views]

F --> F1[UserAdmin.vue]
F --> F2[TicketAdmin.vue]
F --> F3[ImageAdmin.vue]

G --> G1[WorkpieceView.vue]
G --> G2[WorkpieceEdit.vue]

style A fill:#bbdefb
style D fill:#c8e6c9
style F fill:#ffecb3
style G fill:#d7ccc8

8. 安全规范

8.1 认证安全

  • JWT token存储在Cookie中,避免XSS攻击
  • 所有敏感接口都需要JWT认证
  • token有过期时间,需要定期刷新
  • 密码传输使用HTTPS加密

8.2 数据验证

  • 前端进行基础数据格式验证
  • 后端进行完整业务逻辑验证
  • 文件上传限制类型和大小
  • SQL注入防护

9. 性能优化建议

9.1 请求优化

  • 使用请求拦截器统一处理认证
  • 实现请求缓存机制
  • 批量处理相关请求
  • 合理设置请求超时时间

9.2 数据优化

  • 分页查询大数据集
  • 懒加载非关键数据
  • 使用Vuex进行状态管理
  • 实现数据本地缓存

索引

本文档详细说明了邮轮穿舱件管理系统前端与后端API的完整交互规范。通过分析项目代码结构和API文档,建立了清晰的接口定义、数据模型和错误处理机制。前端采用Vue.js技术栈,通过Axios进行HTTP通信,使用JWT进行身份认证,实现了用户管理、工单管理等核心功能。

关键特性:

  • 统一的HTTP请求处理机制
  • 完整的JWT认证流程
  • 标准化的数据模型定义
  • 完善的错误处理策略
  • 清晰的组件架构设计

该规范为前后端开发提供了明确的接口约定,确保了系统的高效、稳定运行。