### 基礎概念
當在 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