什么是Controller
在軟件架構(gòu)中,Controller 是一種關(guān)鍵的設(shè)計(jì)模式,主要用于處理用戶輸入并協(xié)調(diào)模型和視圖之間的交互。在MVC(模型-視圖-控制器)架構(gòu)中,Controller 充當(dāng)中介者,將用戶的請求傳遞給模型進(jìn)行數(shù)據(jù)處理,然后將結(jié)果返回給視圖進(jìn)行顯示。
Controller的基本功能
- 接收用戶請求
- 調(diào)用模型處理數(shù)據(jù)
- 選擇合適的視圖進(jìn)行響應(yīng)
實(shí)現(xiàn)Controller的步驟
1. 構(gòu)建基本項(xiàng)目結(jié)構(gòu)
在開始之前,我們需要有基本的文件夾結(jié)構(gòu),例如:
/myapp
/controllers
/models
/views
app.js
2. 創(chuàng)建Controller文件
在controllers文件夾中創(chuàng)建一個新的Controller文件,比如 UserController.js。
const UserModel = require('../models/UserModel');
class UserController {
static async getUser(req, res) {
const userId = req.params.id;
const user = await UserModel.findById(userId);
res.json(user);
}
}
module.exports = UserController;
3. 設(shè)置路由
在主應(yīng)用文件 app.js 中導(dǎo)入Controller,并設(shè)置路由:
const express = require('express');
const UserController = require('./controllers/UserController');
const app = express();
const port = 3000;
app.get('/user/:id', UserController.getUser);
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
4. 測試Controller
啟動服務(wù)器后,可以通過瀏覽器或API工具(如Postman)訪問URL:
http://localhost:3000/user/1
這將調(diào)用 UserController.getUser 方法并返回用戶信息。
注意事項(xiàng)
- 確保正確處理異步操作,以避免未處理的承諾(Promise)
- 在Controller中不要直接操作數(shù)據(jù)庫,應(yīng)該通過模型來管理數(shù)據(jù)
- 做好錯誤處理,考慮使用中間件處理未捕獲的錯誤
實(shí)用技巧
- 使用中間件進(jìn)行身份驗(yàn)證和權(quán)限控制,確保安全性
- 盡量保持Controller的簡潔,避免過多的業(yè)務(wù)邏輯,應(yīng)該將復(fù)雜邏輯放到模型中處理
- 使用RESTful風(fēng)格設(shè)計(jì)API,提高接口的可讀性和一致性