逐步搭建(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;
班级管理的页面如下图,可以有新增、修改、删除的功能: