cool-admin(midway版)数据字典API设计:查询与缓存接口实现
cool-admin(midway版)数据字典API设计:查询与缓存接口实现
【免费下载链接】cool-admin-midway🔥 cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midway.js 3.x、typescript、typeorm、mysql、jwt、vue3、vite、element-ui等构建项目地址: https://gitcode.com/gh_mirrors/co/cool-admin-midway
cool-admin(midway版)是一个基于midway.js 3.x构建的后台权限管理框架,提供模块化、插件化的开发体验。本文将详细介绍其数据字典API的设计思路,包括查询接口的实现方式与缓存策略,帮助开发者快速掌握数据字典功能的使用与扩展。
数据字典模块结构解析
数据字典模块位于项目的src/modules/dict目录下,采用MVC架构设计,主要包含以下核心文件:
- 实体定义:info.ts和type.ts分别定义了字典项与字典类型的数据结构
- 服务层:info.ts实现数据查询与缓存逻辑
- 控制器:提供 admin 和 app 两种权限的接口访问,如admin/info.ts和app/info.ts
高效查询接口设计
1. 多类型批量查询接口
核心接口实现于DictInfoService的data方法,支持传入多个字典类型key批量获取数据:
// 伪代码示例(源自src/modules/dict/service/info.ts) async data(types: string[]) { // 1. 查询字典类型 let typeData = await this.dictTypeEntity.find(); if (types?.length) { typeData = await this.dictTypeEntity.findBy({ key: In(types) }); } // 2. 批量查询字典项 const data = await this.dictInfoEntity .createQueryBuilder('info') .where('info.typeId IN (:...typeIds)', { typeIds: typeData.map(item => item.id) }) .orderBy('info.sort', 'ASC') .getMany(); // 3. 格式化返回结果 return this.formatDictData(typeData, data); }2. 字典类型列表接口
通过types方法获取系统中所有字典类型:
// 伪代码示例(源自src/modules/dict/service/info.ts) async types() { return await this.dictTypeEntity.find(); }缓存策略实现方案
虽然数据字典模块本身未直接实现缓存,但cool-admin框架提供了完善的缓存基础设施,可通过以下方式集成:
1. 框架缓存配置
在config.default.ts中已预设缓存配置,支持切换为Redis等分布式缓存:
// 缓存配置示例(源自src/config/config.default.ts) cacheManager: { clients: { memory: { store: 'memory', options: { max: 100, ttl: 0, }, }, // redis缓存配置(默认注释) // redis: { // store: redisStore, // options: { // host: 'localhost', // port: 6379, // password: '', // db: 0, // ttl: 60, // }, // }, }, }2. 缓存集成建议
可参考demo模块的缓存实现,为字典查询添加缓存逻辑:
// 建议实现方式(参考src/modules/demo/service/cache.ts) async getDataWithCache(types: string[]) { const cacheKey = `dict:${types.join(',')}`; // 1. 尝试从缓存获取 const cachedData = await this.midwayCache.get(cacheKey); if (cachedData) return cachedData; // 2. 缓存未命中,查询数据库 const result = await this.data(types); // 3. 设置缓存(例如缓存10分钟) await this.midwayCache.set(cacheKey, result, 600000); return result; }接口使用示例
1. 管理员查询接口
通过admin/dict/info/data接口获取指定类型的字典数据:
请求:POST /admin/dict/info/data 参数:{ "types": ["gender", "status"] } 响应:{ "code": 0, "message": "success", "data": { "gender": [{"label": "男", "value": "1"}, {"label": "女", "value": "2"}], "status": [{"label": "启用", "value": "1"}, {"label": "禁用", "value": "0"}] } }2. 应用端查询接口
普通用户通过app/dict/info/data接口获取公开字典数据,实现权限控制。
性能优化建议
- 合理设置缓存时间:根据字典更新频率调整TTL,建议设置10-30分钟
- 批量查询优先:使用多类型查询减少请求次数
- 索引优化:确保
dict_info表的typeId字段已建立索引 - 缓存预热:系统启动时预加载常用字典数据到缓存
通过以上设计,cool-admin的字典API实现了高效的数据查询与灵活的缓存策略,为后台系统提供了可靠的基础数据支撑。开发者可根据实际业务需求,进一步扩展字典的高级功能。
【免费下载链接】cool-admin-midway🔥 cool-admin(midway版)一个很酷的后台权限管理框架,模块化、插件化、CRUD极速开发,永久开源免费,基于midway.js 3.x、typescript、typeorm、mysql、jwt、vue3、vite、element-ui等构建项目地址: https://gitcode.com/gh_mirrors/co/cool-admin-midway
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
