逐步搭建(5):添加数据接口
120021. 本课介绍
在本课中,你将会学习_resource表配置数据接口,实现后端对数据库进行增删改查。认识这个表的结构和每个字段用法的说明。
动手尝试在_resource表中,配置班级管理页面增删改查的数据接口,并且生成班级管理的页面,实现增删改查的功能。
2. 通过_resource表设置数据增删改查功能
在jianghu-basic项目的duUiAction.html页面,打开时候就能获取到数据库的信息,点击新增按钮可以在新增抽屉的表单中填入数据,填写完成后点击“保存“”按钮,这些数据是怎样被保存到数据库的呢?
在duUiAction.html的页面上,“新增”按钮调用了doUiAction('createItem')里面的doCreateItem()函数,用jianghuAxios把新增的信息发送给后端。

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

通过这条数据,就可以定义了新增数据的数据接口。
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并且实现增删改查功能。
DROP TABLE IF EXISTS `class`;CREATE TABLE `class` (`id` int(11) NOT NULL AUTO_INCREMENT,`classId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '班级ID',`remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '备注',`classStatus` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT 'active' COMMENT '班级状态',`operation` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT 'insert' COMMENT '操作; insert, update, jhInsert, jhUpdate, jhDelete jhRestore',`operationByUserId` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作者userId',`operationByUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作者用户名',`operationAt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '操作时间; E.g: 2021-05-28T10:24:54+08:00 ',PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 124 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;-- ------------------------------ Records of class-- ----------------------------INSERT INTO `class` VALUES (1, '2021-01级-01班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-05-02T14:44:42+08:00');INSERT INTO `class` VALUES (2, '2021-01级-02班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-04-27T19:52:53+08:00');INSERT INTO `class` VALUES (3, '2021-02级-01班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-04-27T19:52:53+08:00');INSERT INTO `class` VALUES (4, '2021-02级-02班', NULL, '正常', 'jhUpdate', 'admin', '系统管理员', '2022-04-27T19:52:53+08:00');SET FOREIGN_KEY_CHECKS = 1;
班级管理的页面如下图,可以有新增、修改、删除的功能:
