Part02 ☀️
Part02 ☀️
课程内容
- 接口文档设计
- 服务端(Devbox)项目创建
- 服务端(Trae)-接口开发部门管理
- 服务端(Trae)-接口开发员工管理
- 服务端(Trae)-接口开发文件上传
- 服务端(Trae)-接口开发登录认证
- 接口测试
完成后端编写
1. 接口文档设计
接口文档设计
接口设计流程💡

将准备好的数据库表,页面原型截图,还有接口文档的模板,发送给Deepseek,Deepseek会根据这些信息,设计出接口文档
代码操作
注意:wenxiaobaideepseek不能多个附件,需要跳转到官方的deepseek
官方的Deepseek:
提示词:👇
请严格根据提供的部门管理的页面原型和需求说明,以及提供的接口文档的模板,参照提供的部门表dept的表结构,基于Restfu风格,帮我设计部门管理模块涉及到的接口文档。
dept部门表的表结构如下:
CREATE TABLE dept (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '部门ID',
name VARCHAR(10) NOT NULL UNIQUE COMMENT '部门名称',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
输出结果不要使用markdown格式

正在生成接口文档: 👇
最终生成的接口文档,没有使用markdown格式,而是使用html格式,将生成完成的接口信息进行保存。建议用方式2,直观
方式1:存储在本地文件:api.md中

方式2;保存到飞书上的截图
接下来,需要结合页面原型图,对接口文档中每个接口进行检查和完善,确保没问题有关细节,要认真听讲啊!!
yf接口文档—部门列表 👈 点击看看
设计完部门管理接口文档后,接下来,我们设计员工管理的接口文档,提示词如下:
请严格根据提供的员工管理的页面原型和需求说明,以及提供的接口文档的模板, 参照提供的员工表emp的表结构 和 员工工作经历表 emp_expr的表结构,基于Restful风格,帮我设计员工管理模块涉及到的接口文档。
表结构如下:
-- 员工表
CREATE TABLE emp (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '员工ID',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名(登录账号)',
name VARCHAR(10) NOT NULL COMMENT '姓名',
gender TINYINT COMMENT '性别,1:男,2:女',
phone VARCHAR(11) NOT NULL UNIQUE COMMENT '手机号',
position TINYINT COMMENT '职位,1:班主任,2:讲师,3:学工主管,4:教研主管,5:咨询师',
dept_id INT COMMENT '所属部门ID',
hire_date DATE COMMENT '入职日期',
image VARCHAR(255) COMMENT '头像路径',
salary INT COMMENT '薪资',
password VARCHAR(64) DEFAULT '123456' COMMENT '密码',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工表';
-- 员工工作经历表
CREATE TABLE emp_expr (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '经历ID',
emp_id INT COMMENT '员工ID',
company VARCHAR(100) COMMENT '公司名称',
position VARCHAR(50) COMMENT '担任职位',
start_date DATE COMMENT '开始日期',
end_date DATE COMMENT '结束日期',
description TEXT COMMENT '工作描述',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工工作经历表';
输出结果不要使用markdown格式(严格执行)
上传页面原型图后,发现不识别文字信息,是因为页面太大,需要将大图切成小图上传
将大图片切成小图片上传,Deepseek就能识别了 nice
将生成的接口文档,复制粘贴到飞书的文档中,自动排版
接口文档👈
总结
课堂作业
- 参考上述的接口文档设计,设计员工和部门管理模块涉及到的接口文档。🎤
- 接口文档中,需要包含哪些信息?🎤
- 接口文档开发需要慢工出细活,需要反复修改,才能达到最终的效果,请同学们认真对待。🎤 为了方便同学们,我已经帮大家设计好了接口文档,请同学们参考,并认真完成员工管理的接口文档设计。👇
2. 服务端(Devbox)项目创建
提示
这个操作已经在part01讲过了,如果不记得,翻到part01看下2.3的实操
项目名:zxyf-management
服务端开发:

总结
课堂作业
- 参考笔记,创建一个属于自己项目的后端环境🎤
3. 服务端(Trae)-接口开发部门管理
部门管理
完成部门管理的5个接口
代码操作
- 点击按钮使用trae打开项目

中途一路信任和安装
2. 点开builder界面开始操作

3. 书写开发部门管理的提示词:
请根据提供的部门表的表结构和接口文档,基于SpringBoot+Mybatis+PageHelper技术帮我完成部门管理功能的接口开发 (使用JDK1.8之后新语法)。
1. 要操作的表是 dept 部门表, 表结构如下:
CREATE TABLE dept (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '部门ID',
name VARCHAR(10) NOT NULL UNIQUE COMMENT '部门名称',
create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';
2. 要操作的数据库的主机地址: zxyfdb-mysql.ns-mel8wzuo.svc, 端口号: 3306, 用户名: root , 密码: grqhhcrg, 数据库名: zxyfdb
3. 部门管理中一共有5个接口, 具体的接口信息如下:
3.1 部门列表查询
请求路径:/depts
请求方式:GET
请求参数: 无
响应数据:
{
"code": 1,
"msg": "success",
"data": [
{
"id": 1,
"name": "学工部",
"createTime": "2022-09-01T23:06:29",
"updateTime": "2022-09-01T23:06:29"
},
{
"id": 2,
"name": "教研部",
"createTime": "2022-09-01T23:06:29",
"updateTime": "2022-09-01T23:06:29"
}
]
}
备注: 响应效果中 code 代表是否操作成功, 1: 成功, 0: 失败; msg: 提示信息; data: 返回的数据
3.2 删除部门
请求路径:/depts/{id}
请求方式:DELETE
请求参数:id ,为路径参数
请求样例:/depts/1, /depts/2
响应数据格式:
{
"code":1,
"msg":"success",
"data":null
}
3.3 添加部门
请求路径:/depts
请求方式:POST
请求样例:{"name": "教研部"}
响应数据格式:
{
"code":1,
"msg":"success",
"data":null
}
3.4 根据ID查询
请求路径:/depts/{id}
请求方式:GET
请求参数:id ,为路径参数
请求样例:/depts/1, /depts/2
响应数据格式:
{
"code": 1,
"msg": "success",
"data": {
"id": 1,
"name": "学工部",
"createTime": "2022-09-01T23:06:29",
"updateTime": "2022-09-01T23:06:29"
}
}
3.5 修改部门
请求路径:/depts
请求方式:PUT
请求样例:
{
"id": 1,
"name": "教研部"
}
响应数据格式:
{
"code":1,
"msg":"success",
"data":null
}
4. 提交到推理模型中开发代码
5. ai将做以下工作: 1. 导入pom依赖 2. 创建实体类 3. 创建mapper接口 4. 创建mapper.xml 5. 创建service接口 6. 创建service实现类 7. 创建controller 8. 创建测试类 9. 创建启动类 10. 创建配置文件 11. 创建数据库表

- 提问:执行启动

自动下载依赖
7. 启动成功,准备测试

8. 对话:增加knife4j框架进行测试,



其他接口都可以进行测试
总结
课堂作业
- 参考上述步骤完成部门管理,也可以完成其他模块的开发,关键是提示词哦🎤
4. 服务端(Trae)-接口开发员工管理
前言
完成员工管理的6个接口
代码操作
- 准备提示词:
提示词:
请提供的表结构、接口文档 以及页面原型和需求说明,基于 SpringBoot+Mybatis+PageHelper 帮我完成员工管理的功能接口开发(使用JDK1.8之后的新语法)。
1. 要操作的是员工表emp 以及员工的工作经历表 emp_expr,具体的表结构如下:
CREATE TABLE emp (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '员工ID',
username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名(2-20位)',
password VARCHAR(64) DEFAULT '123456' COMMENT '登录密码',
name VARCHAR(10) NOT NULL COMMENT '姓名(2-10位)',
gender TINYINT COMMENT '性别, 1: 男, 2: 女',
phone CHAR(11) NOT NULL UNIQUE COMMENT '手机号(11位)',
position TINYINT COMMENT '职位, 1: 班主任, 2: 讲师, 3: 学工主管, 4: 教研主管, 5: 咨询师',
salary INT COMMENT '薪资(整数存储)',
image VARCHAR(255) COMMENT '头像路径',
hire_date DATE COMMENT '入职日期',
dept_id INT COMMENT '所属部门ID',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后操作时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表';
CREATE TABLE emp_expr (
id INT AUTO_INCREMENT PRIMARY KEY COMMENT '经历ID',
emp_id INT COMMENT '关联员工的ID',
company VARCHAR(50) COMMENT '公司名称',
position VARCHAR(50) COMMENT '担任职位',
start_date DATE COMMENT '开始日期',
end_date DATE COMMENT '结束日期'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工工作经历表';
2. 员工管理中一共包含6个接口,具体的接口信息如下:
2.1 员工列表查询
请求路径:/emps
请求方式:GET
请求参数:
name: 姓名,可选
gender: 性别,可选
begin: 入职日期的开始时间,可选
end: 入职日期的结束时间,可选
page: 页码,默认1
pageSize: 每页展示记录数,默认10
请求样例:
/emps?page=1&pageSize=10
/emps?name=张&page=1&pageSize=10
/emps?gender=1&page=1&pageSize=10
/emps?name=张&gender=1&page=1&pageSize=10
/emps?name=张&gender=1&begin=2007-09-01&end=2022-09-01&page=1&pageSize=10
响应数据格式:
{
"code": 1,
"msg": "success",
"data": {
"total": 2,
"rows": [
{
"id": 1,
"username": "jinyong",
"name": "金庸",
"gender": 1,
"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
"position": 2,
"salary": 8000,
"hireDate": "2015-01-01",
"deptId": 2,
"deptName": "教研部",
"createTime": "2022-09-01T23:06:30",
"updateTime": "2022-09-02T00:29:04"
},
{
"id": 2,
"username": "zhangwuji",
"name": "张无忌",
"gender": 1,
"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
"position": 2,
"salary": 6000,
"hireDate": "2015-01-01",
"deptId": 2,
"deptName": "教研部",
"createTime": "2022-09-01T23:06:30",
"updateTime": "2022-09-02T00:29:04"
}
]
}
}
2.2 删除员工
请求路径:/emps
请求方式:DELETE
请求参数:ids ,为路径参数
请求样例:/emps?ids=1,2,3
响应数据格式:
{
"code":1,
"msg":"success",
"data":null
}
2.3 添加员工
请求路径:/emps
请求方式:POST
请求样例:
{
"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-03-07-37-38222.jpg",
"username": "linpingzhi",
"name": "林平之",
"gender": 1,
"position": 1,
"hireDate": "2022-09-18",
"deptId": 1,
"phone": "18809091234",
"salary": 8000,
"exprList": [
{
"company": "百度科技股份有限公司",
"position": "java开发",
"startDate": "2012-07-01",
"endDate": "2019-03-03"
},
{
"company": "阿里巴巴科技股份有限公司",
"position": "架构师",
"startDate": "2019-03-15",
"endDate": "2023-03-01"
}
]
}
响应数据格式:
{
"code":1,
"msg":"success",
"data":null
}
2.4 根据ID查询
请求路径:/emps/{id}
请求方式:GET
请求参数:id ,为路径参数
请求样例:/emps/1, /emps/2
响应数据格式:
{
"code": 1,
"msg": "success",
"data": {
"id": 2,
"username": "zhangwuji",
"name": "张无忌",
"gender": 1,
"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
"position": 2,
"salary": 8000,
"hireDate": "2015-01-01",
"deptId": 2,
"createTime": "2022-09-01T23:06:30",
"updateTime": "2022-09-02T00:29:04",
"exprList": [
{
"id": 1,
"startDate": "2012-07-01",
"endDate": "2019-03-03"
"company": "百度科技股份有限公司"
"position": "java开发",
"empId": 2
},
{
"id": 2,
"startDate": "2019-3-15",
"endDate": "2023-03-01"
"company": "阿里巴巴科技股份有限公司"
"position": "架构师",
"empId": 2
}
]
}
}
2.5 修改员工
请求路径:/emps
请求方式:PUT
请求样例:
{
"id": 2,
"username": "zhangwuji",
"password": "123456",
"name": "张无忌",
"gender": 1,
"image": "https://web-framework.oss-cn-hangzhou.aliyuncs.com/2022-09-02-00-27-53B.jpg",
"position": 2,
"salary": 8000,
"hireDate": "2015-01-01",
"deptId": 2,
"createTime": "2022-09-01T23:06:30",
"updateTime": "2022-09-02T00:29:04",
"exprList": [
{
"id": 1,
"startDate": "2012-07-01",
"endDate": "2015-06-20"
"company": "中软国际股份有限公司"
"position": "java开发",
"empId": 2
},
{
"id": 2,
"startDate": "2015-07-01",
"endDate": "2019-03-03"
"company": "百度科技股份有限公司"
"position": "java开发",
"empId": 2
},
{
"id": 3,
"startDate": "2019-3-15",
"endDate": "2023-03-01"
"company": "阿里巴巴科技股份有限公司"
"position": "架构师",
"empId": 2
}
]
}
响应数据格式:
{
"code":1,
"msg":"success",
"data":null
}
2.6 查询全部员工
请求路径:/emps/list
请求方式:GET
请求参数:无
响应数据格式:
{
"code": 1,
"msg": "success",
"data": [
{
"id": 21,
"username": "zcc",
"password": "123456",
"name": "周星驰",
"gender": 1,
"image": "https://web-65.oss-cn-beijing.aliyuncs.com/99c143e9-0241-41f3-bc55-dd5e4e0824f4.jpg",
"position": 1,
"salary": 8000,
"hireDate": "2023-04-23",
"deptId": 2,
"createTime": "2023-05-26T17:25:01",
"updateTime": "2023-06-04T19:25:15"
},
{
"id": 6,
"username": "xiaozhao",
"password": "123456",
"name": "小昭",
"gender": 2,
"image": "https://web-65.oss-cn-beijing.aliyuncs.com/da94dc38-f165-480c-b8b7-0b3f4bcd1602.jpg",
"position": 3,
"salary": 8000,
"hireDate": "2013-09-05",
"deptId": 1,
"createTime": "2023-04-07T11:16:00",
"updateTime": "2023-04-14T08:22:41"
}
]
}
2. 输入到Cursor中,等待ai编程工具生成代码

3. 提问:启动项目
4. 访问公网地址/doc.html 进入接口文档页面,查看和测试接口功能是否正常
注意:如果接口文档页面没有正常显示,就直接提问:
请优化接口文档

至此员工模块就开发完了!!!
总结
课堂作业
- 参考上述接口文档,完成员工表的增删改查功能接口开发。🎤
5. 服务端(Trae)-接口开发文件上传
文件上传
完成员工头像上传的接口开发,员工头像要操作的表结构就是员工表 emp 。

员工图像上传
选填 。点击上传图片,上传本地图片。再次点击,修改图片。
2.4.1 图片限制
图片大小不超过2M ,仅能上传PNG JPG JPEG类型图片,建议上传200*200或300*300尺寸的图片
2.4.2 异常提示
图片过大,上传失败
格式错误,上传失败
代码操作
1. 准备云存储,用来存放员工头像

2.记录云存储的Access Key、Secret Key、Internal、External、存储桶名共计5个字段
- 阅读接口文档,准备提示词:
根据如下接口信息,完成文件上传的功能。
点击上传图片,上传本地图片。再次点击,修改图片。
2.4.1 图片限制
图片大小不超过2M ,仅能上传PNG JPG JPEG类型图片,建议上传200*200或300*300尺寸的图片
2.4.2 异常提示
图片过大,上传失败
格式错误,上传失败
1. 文件上传的接口信息如下:
1.1 请求路径: /upload
1.2 请求方式: POST
1.3 请求参数名: file
1.4 响应结果样例(data: 表示文件的访问路径):
{
"code": 1,
"msg": "success",
"data": "http://aliyun.oss.com/1.jpg"
}
2. 文件使用对象存储服务存储,对象存储服务的信息:
Access Key:mel8wzuo
Secret Key:djq8qg5dz7w7j4dg
Internal:object-storage.objectstorage-system.svc.cluster.local
External:objectstorageapi.hzh.sealos.run
存储桶名: mel8wzuo-zxyf
对象存储服务操作指南:https://sealos.run/docs/guides/object-storage
- 输入到Cursor中,等待ai编程工具生成代码

启动项目,访问公网地址/doc.html 进入接口文档页面,查看和测试接口功能是否正常
测试上传图片功能

总结
课堂作业
- 参考上述接口文档,完成员工头像上传的接口开发。🎤
6. 服务端(Trae)-接口开发登录认证
前言
完成员工登录认证

代码操作
提示词如下:
请根据提供的接口文档,帮我完成员工登录的功能接口开发,员工登录要操作的表结构就是员工表 emp 。
1. 登录接口的基本信息如下:
1.1 请求路径: /login
1.2 请求方式: POST
1.3 接口描述: 该接口用于员工登录智学云帆-教学管理系统,登录完毕后,系统下发JWT令牌。
1.4 请求参数样例:
{
"username": "songjiang",
"password": "123456"
}
1.5 响应数据样例:
1.5.1 登录成功
{
"code": 1,
"msg": "success",
"data": {
"id": 2,
"username": "songjiang",
"name": "宋江",
"token": "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MiwidXNlcm5hbWUiOiJzb25namlhbmciLCJleHAiOjE2OTg3MDE3NjJ9.w06EkRXTep6SrvMns3w5RKe79nxauDe7fdMhBLK-MKY"
}
}
1.5.2 登录失败
{
"code": 0,
"msg": "用户名或密码错误",
"data": null
}
1.6 备注说明: 用户登录成功后,系统会自动下发JWT令牌,然后在后续的每次请求中,都需要在请求头header中携带到服务端,请求头的名称为 token ,值为 登录时下发的JWT令牌。 如果检测到用户未登录,则直接响应 401 状态码 。
请根据上述登录接口的信息,帮我实现登录接口功能的开发。

如果报错了,直接选中错误信息,添加到输入栏,然后修复
完成后,运行项目,访问公网地址/doc.html 进入接口文档页面,查看和测试接口功能是否正常

没有登录,直接返回401,被拦截了,需要再header中添加token,才可以访问
添加token步骤 👇
总结
课堂作业
- 根据上述接口文档,完成员工登录认证的接口开发。🎤