星期三, 8月 16, 2017

[node.js] 快快樂樂學node.js (四) REST API 模組化-使用控制器


在上一篇
[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

沒有留言:

張貼留言

留個話吧:)

其他你感興趣的文章

Related Posts with Thumbnails