### 基础概念
当在 Action 里处理用户的请求时,经常要先获取用户提交过来的数据,然后对其校验,如果校验没问题后才能进行后续的操作;当参数校验完成后,有时候还要进行权限判断等,这些都判断无误后才能进行真正的逻辑处理。如果将这些代码都放在一个 Action 里,势必让 Action 的代码非常复杂且冗长。
为了解决这个问题, ThinkJS 在控制器前面增加了一层`Logic`,Logic 里的 Action 和控制器里的 Action 一一对应,系统在调用控制器里的 Action 之前会自动调用 Logic 里的 Action。
### News控制器的Logic层实现
文件路径:/src/logic/api/portal/news.js
~~~
export default class extends think.Logic {
async getDetailAction() {
const rules = {
id: {
int: { min: 1 },
required: true,
method: "GET",
},
};
const flag = this.validate(rules);
if (!flag) {
return this.fail("数据格式验证错误", this.validateErrors);
}
}
async getListAction() {
const rules = {
page: {
int: { min: 1 },
required: false,
default: 1,
method: "GET",
},
pageSize: {
int: { min: 3, max: 20 },
required: false,
default: 10,
method: "GET",
},
keywords: {
// regexp: /\u4e00-\u9fa5a-zA-Z\d/gi, //匹配汉字英文字母和数字
string: true, // 字段类型为 String 类型
required: false, // 字段必填
trim: true, // 字段需要trim处理
method: "GET",
},
};
const flag = this.validate(rules);
if (!flag) {
return this.fail("数据格式验证错误", this.validateErrors);
}
}
}
~~~
- 文档说明
- 服务端开发指南
- 客户端开发指南
- 请求拦截器
- API接口实例分析
- 页面文件
- NPM包管理
- 创建NPM包项目
- 课程设计
- 概述
- 内容管理系统项目
- 配置开发环境
- 设计静态原型
- 快速构建项目
- 构建CMS系统前端界面
- 门户模块
- 新闻列表
- API接口规范
- 生成模拟数据
- 显示新闻列表
- NavigatorPath组件
- ChannelHeader组件
- v-line-clamp指令
- formatDate过滤器
- 新闻详情页
- 修改顶部导航菜单
- 实现访问远程API
- 扩展功能
- 组件开发
- 服务端项目
- 编写服务模块
- 项目配置
- 数据库
- 创建数据库脚本
- 配置数据库
- 创建模拟数据
- 新闻模块控制器
- 添加逻辑验证层
- 实现接口
- 书栈模块
- QA