JetBrains全家桶与Visual Studio深度对比:12项核心指标实测数据曝光(2024开发者必看)
2026/6/27 9:17:49
本次作业是在第7次作业的基础上补充前端部分,包括接口文档。
pj4/ ├── pom.xml # Maven 配置:声明依赖 ├── init.sql # 数据库初始化脚本 ├── mvnw / mvnw.cmd # Maven Wrapper(无需本地装 Maven) ├── src/ │ ├── main/ │ │ ├── java/com/example/pj4/ │ │ │ ├── Pj4Application.java # Spring Boot 启动入口 │ │ │ ├── pojo/ │ │ │ │ └── User.java # 实体类(POJO):一张表对应一个类 │ │ │ ├── mapper/ │ │ │ │ └── UserMapper.java # MyBatis Mapper 接口:定义数据库操作 │ │ │ └── controller/ │ │ │ └── UserController.java # 【新增】REST 控制器:提供 JSON 接口 │ │ └── resources/ │ │ └── application.properties # 数据库连接配置 │ └── test/java/com/example/pj4/ │ └── Pj4ApplicationTests.java # 单元测试 ├── frontend/ # 【新增】前端项目目录 │ ├── index.html # HTML 入口 │ ├── package.json # 前端依赖声明 │ ├── vite.config.js # Vite 构建配置 │ └── src/ │ ├── main.js # Vue 应用入口 │ ├── App.vue # 主页面:表格 + 搜索 + 弹窗 │ └── api/ │ └── user.js # Axios 封装:5 个 API 调用函数 └── target/ # 编译输出目录(自动生成,不用管)| 项目 | 内容 |
|---|---|
| Base URL | http://localhost:8080 |
| Content-Type | application/json |
| 字符编码 | UTF-8 |
所有接口返回格式如下:
{"code":200,"message":"success","data":...}| code | 含义 |
|---|---|
| 200 | 成功 |
| 404 | 资源不存在 |
| 500 | 服务器内部错误 |
| 项目 | 内容 |
|---|---|
| 方法 | GET |
| URL | /api/users |
| 参数 | keyword— 搜索关键词,按姓名模糊匹配,可选 |
请求示例:
GET /api/users GET /api/users?keyword=王响应示例:
{"code":200,"message":"success","data":[{"id":1,"name":"白眉鹰王","age":55,"gender":1,"phone":"18800000000"},{"id":2,"name":"金毛狮王","age":45,"gender":1,"phone":"18800000001"},{"id":3,"name":"青翼蝠王","age":38,"gender":1,"phone":"18800000002"}]}| 项目 | 内容 |
|---|---|
| 方法 | GET |
| URL | /api/users/{id} |
| 路径参数 | id— 用户 ID,整数 |
请求示例:
GET /api/users/1成功响应:
{"code":200,"message":"success","data":{"id":1,"name":"白眉鹰王","age":55,"gender":1,"phone":"18800000000"}}失败响应:
{"code":404,"message":"用户不存在","data":null}| 项目 | 内容 |
|---|---|
| 方法 | POST |
| URL | /api/users |
请求体:
{"name":"张无忌","age":22,"gender":1,"phone":"19900000000"}字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 姓名 |
| age | number | 是 | 年龄,1-150 |
| gender | number | 是 | 性别,1=男,2=女 |
| phone | string | 是 | 手机号,11 位 |
注意:
id字段不需要传,数据库自增生成,插入成功后会回填到响应中。
响应示例:
{"code":200,"message":"新增成功","data":{"id":7,"name":"张无忌","age":22,"gender":1,"phone":"19900000000"}}| 项目 | 内容 |
|---|---|
| 方法 | PUT |
| URL | /api/users/{id} |
| 路径参数 | id— 要更新的用户 ID |
请求体:
{"name":"殷天正","age":60,"gender":1,"phone":"18800000000"}成功响应:
{"code":200,"message":"更新成功","data":null}失败响应:
{"code":404,"message":"用户不存在","data":null}| 项目 | 内容 |
|---|---|
| 方法 | DELETE |
| URL | /api/users/{id} |
| 路径参数 | id— 要删除的用户 ID |
请求示例:
DELETE /api/users/7成功响应:
{"code":200,"message":"删除成功","data":null}失败响应:
{"code":404,"message":"用户不存在","data":null}{"id":1,"name":"白眉鹰王","age":55,"gender":1,"phone":"18800000000"}| 字段 | 类型 | 说明 |
|---|---|---|
| id | number | 主键,自增 |
| name | string | 姓名 |
| age | number | 年龄 |
| gender | number | 1=男,2=女 |
| phone | string | 手机号 |
CREATETABLE[user](idINTIDENTITY(1,1)PRIMARYKEY,name NVARCHAR(100)NULL,ageTINYINTNULL,genderTINYINTNULL,phone NVARCHAR(11)NULL);importaxiosfrom'axios'constapi=axios.create({baseURL:'http://localhost:8080/api',timeout:5000})// 查询全部(支持搜索)exportconstgetUsers=(keyword)=>api.get('/users',{params:{keyword}})// 按 ID 查询exportconstgetUserById=(id)=>api.get(`/users/${id}`)// 新增exportconstaddUser=(user)=>api.post('/users',user)// 更新exportconstupdateUser=(id,user)=>api.put(`/users/${id}`,user)// 删除exportconstdeleteUser=(id)=>api.delete(`/users/${id}`)// 查询全部constres=awaitgetUsers()console.log(res.data.data)// 用户数组// 搜索constres=awaitgetUsers('王')console.log(res.data.data)// 姓名包含"王"的用户// 新增constres=awaitaddUser({name:'张无忌',age:22,gender:1,phone:'19900000000'})console.log(res.data.data.id)// 回填的 ID// 更新awaitupdateUser(1,{name:'殷天正',age:60,gender:1,phone:'18800000000'})// 删除awaitdeleteUser(7)| code | message | 触发条件 |
|---|---|---|
| 200 | success / 新增成功 / 更新成功 / 删除成功 | 操作成功 |
| 404 | 用户不存在 | 查询、更新、删除时 ID 不存在 |
| 500 | 服务器内部错误 | 数据库连接失败等异常 |