文章出處

回到目錄

在Node.js里,你可以控制請求和響應,自己可以定義自己的響應方式,如對文本如何響應,對json如何響應,對圖像流如何響應等等,而這些在Sails架構里,變得更加容易和清晰了,它位于項目的api/responses目錄下,你可以定義自己的響應體。

其實sails為我們封裝了一些標準的相應,如view方法,這也就是一種響應體,它可以將文本,json對象渲染到指定的視圖上,而我們自己可以效仿它,實現自己的響應體,下面代碼是官方給出的一個實例,它的方法名為myResponse,這是sails架構一個定義類模塊的方式,即JS文件名不是你的類名,我們在程序里可以通過res.myResponse("你的響應內容")去調用它,具體代碼如下

 

/**
 * api/responses/myResponse.js
 *
 * This will be available in controllers as res.myResponse('foo');
 */

module.exports = function(message) {

    var req = this.req;
    var res = this.res;

    var viewFilePath = 'mySpecialView';
    var statusCode = 200;

    var result = {
        status: statusCode
    };

    // Optional message
    if (message) {
        result.message = message;
    }

    // If the user-agent wants a JSON response, send json
    if (req.wantsJSON) {
        return res.json(result, result.status);
    }

    // Set status code and view locals
    res.status(result.status);
    for (var key in result) {
        res.locals[key] = result[key];
    }
    // And render view
    res.render(viewFilePath, result, function (err) {
        // If the view doesn't exist, or an error occured, send json
        if (err) {
            return res.json(result, result.status);
        }

        // Otherwise, serve the `views/mySpecialView.*` page
        res.render(viewFilePath);
    });
};

它實現了普通文件和json對象的兩種響應方式,我們在代碼里調用它和view類是一樣的

module.exports={
    index: function (req, res){
        return res.view({title:"大叔",engTitle:"Lind"});
        //return res.view("view_name",data)//view_name參數為空表示用當前的action
    },
err:function(req,res){
    return res.myResponse({errCode:0,error:"產生錯誤"});
}

};

通過執行http://localhost:1337/test/err得到下面的結果

上面的功能類似于c# mvc里的重寫ViewResult,都是對輸出響應流進行控制的。

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()