在上一篇
[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
沒有留言:
張貼留言
留個話吧:)