逐步搭建(5):添加数据接口

12002

1. 本课介绍

在本课中,你将会学习_resource表配置数据接口,实现后端对数据库进行增删改查。认识这个表的结构和每个字段用法的说明。

动手尝试在_resource表中,配置班级管理页面增删改查的数据接口,并且生成班级管理的页面,实现增删改查的功能。

2. 通过_resource表设置数据增删改查功能

jianghu-basic项目的duUiAction.html页面,打开时候就能获取到数据库的信息,点击新增按钮可以在新增抽屉的表单中填入数据,填写完成后点击“保存“”按钮,这些数据是怎样被保存到数据库的呢?

duUiAction.html的页面上,“新增”按钮调用了doUiAction('createItem')里面的doCreateItem()函数,用jianghuAxios把新增的信息发送给后端。

102-08-jianghujs-basic-doCreate函数.png

这个请求信息将被后端数据接口接收,但在建立这个连接之前,需要对 _resource 表进行配置。

102-08-jianghujs-basic-resource表配置.png

通过这条数据,就可以定义了新增数据的数据接口。

3. 数据接口的类型

在Jianghu框架中接口可以直接手动通过项目数据库的_resource表进行配置,根据_resource的resourceType字段,数据接口分成两类:

sql resource: 用sql语句操作数据库,可以实现较为简单的 CRUD 操作,这种类型是最常用的类型。

service resource: 后端根据请求找出/app/service下对应的service,执行对应的方法并将结果返回给前端.

5. _resource表的结构与功能

_resource各字段功能的说明:

字段 说明
pageId 接口的一级名称
actionId 接口的二级名称,结合一级名称可以快速定位接口:
desc 协议的描述说明
resourceType 协议类型; sql: 处理简单的crud操作; service:手动创建相关service处理复杂的逻辑;
appDataSchema appData 参数数据结构的校验
resourceData 协议的具体实现配置

配置doUiAction的_resource表的新增数据接口的例子:

pageId actionId desc resourceType appDataSchema resourceData
doUiAction createItem 查询列表 sql { "table": "student", "operation": "insertItem" }

接口的命名与jianghuAxios发送的请求所包含的参数相对应。这种一致性是通信协议约定的一部分,只有在前后端都遵循这一约定时,数据通信才能成功进行。

6. 项目:添加班级增删改查的数据接口

在数据库jianghujs-basic_resource表中,参考doUiAction的写法,动手尝试写班级管理classManagement的增删改查数据接口。

7. 动手练习:生成班级管理页面并且实现增删改查功能

用Navicat使用下面的SQL语句,在数据库jianghujs-basic中生成class表和数据,在jianghujs-basic项目里生成班级管理页面classManagement.html并且实现增删改查功能。

  1. DROP TABLE IF EXISTS `class`;
  2. CREATE TABLE `class` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `classId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '班级ID',
  5. `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',
  6. `classStatus` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT 'active' COMMENT '班级状态',
  7. `operation` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT 'insert' COMMENT '操作; insert, update, jhInsert, jhUpdate, jhDelete jhRestore',
  8. `operationByUserId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作者userId',
  9. `operationByUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作者用户名',
  10. `operationAt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作时间; E.g: 2021-05-28T10:24:54+08:00 ',
  11. PRIMARY KEY (`id`) USING BTREE
  12. ) ENGINE = InnoDB AUTO_INCREMENT = 124 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
  13. -- ----------------------------
  14. -- Records of class
  15. -- ----------------------------
  16. INSERT INTO `class` VALUES (1, '2021-01级-01班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-05-02T14:44:42+08:00');
  17. INSERT INTO `class` VALUES (2, '2021-01级-02班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-04-27T19:52:53+08:00');
  18. INSERT INTO `class` VALUES (3, '2021-02级-01班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-04-27T19:52:53+08:00');
  19. INSERT INTO `class` VALUES (4, '2021-02级-02班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-04-27T19:52:53+08:00');
  20. SET FOREIGN_KEY_CHECKS = 1;

班级管理的页面如下图,可以有新增、修改、删除的功能:

102-08-jianghujs-basic-班级管理页面.png