在上一篇
[node.js] 快快樂樂學node.js (三) 實作第一個REST API (沒有採用資料庫)
的範例中,並沒有將程式碼考慮到如果有愈多不到資源的REST要處理的話(例如:用戶/Blog等等),
程式碼就會顯示的不好管理,因此我們要將messages拆分到另一個js檔案裡
新增messagesCtrl.js 控制器
以下程式碼我們將原本routes/api.js裡面要使用的方法拆分到一個messageCtrl.js的控制器
var messages = {};
messages.index = function(req, res) {
res.json({ message: "Hello Message!!" });
};
messages.read = function(req, res) {
res.json({
id: req.params.id, // 以req.params.id 取得參數
message: 'The get api for messages: ' + req.params.id
})
};
messages.create = function(req, res) {
res.json({
id: req.params.id,
message: 'The post api for messages: ' + req.params.id
})
};
messages.update = function(req, res) {
res.json({
id: req.params.id,
message: 'The put api for messages: ' + req.params.id
})
};
messages.delete = function(req, res) {
res.json({
id: req.params.id,
message: 'The delete api for messages: ' + req.params.id
})
};
module.exports = messages;
修改routes/api.js
/*簡單的api範例*/
var express = require('express');
//載入控制器
var messagesCtrl = require('../controllers/messagesCtrl');
var router = express.Router();
/// Messages ROUTER ///
//所有訊息
router.get('/messages', messagesCtrl.index);
//單一訊息
//使用網址path的方式,帶入指定物件的id
router.route('/messages/:id')
.get(messagesCtrl.read)
.post(messagesCtrl.create)
.put(messagesCtrl.update)
.delete(messagesCtrl.delete)
module.exports = router;
這樣就可以讓程式碼更簡潔一點了,以後api.js就可以來定義所有api routes與ctrls
沒有留言:
張貼留言
留個話吧:)