中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Node.js與(yu)Sails~自定義(yi)響應體responses

回到目錄

在Node.js里,你(ni)可(ke)以控制請求(qiu)和(he)響(xiang)(xiang)應,自(zi)己(ji)可(ke)以定義自(zi)己(ji)的響(xiang)(xiang)應方式(shi),如對文本(ben)如何(he)(he)響(xiang)(xiang)應,對json如何(he)(he)響(xiang)(xiang)應,對圖像流如何(he)(he)響(xiang)(xiang)應等(deng)等(deng),而這些(xie)在Sails架構里,變(bian)得更加(jia)容易和(he)清晰了,它(ta)位于(yu)項目(mu)的api/responses目(mu)錄下,你(ni)可(ke)以定義自(zi)己(ji)的響(xiang)(xiang)應體(ti)。

其實sails為我們(men)封裝了(le)一些(xie)標準的相應,如(ru)view方(fang)法(fa),這也就(jiu)是(shi)一種響(xiang)(xiang)應體(ti),它(ta)可以(yi)將文本,json對象渲染到(dao)指定(ding)的視圖上,而(er)我們(men)自己(ji)(ji)可以(yi)效仿它(ta),實現(xian)自己(ji)(ji)的響(xiang)(xiang)應體(ti),下面代碼是(shi)官方(fang)給出的一個實例,它(ta)的方(fang)法(fa)名(ming)為myResponse,這是(shi)sails架構一個定(ding)義(yi)類模塊的方(fang)式,即JS文件名(ming)不(bu)是(shi)你的類名(ming),我們(men)在(zai)程(cheng)序里(li)可以(yi)通過(guo)res.myResponse("你的響(xiang)(xiang)應內容")去調用它(ta),具體(ti)代碼如(ru)下

 

/**
 * 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);
    });
};

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

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

};

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

上面(mian)的(de)功能(neng)類(lei)似(si)于c# mvc里的(de)重(zhong)寫ViewResult,都是(shi)對輸出(chu)響應流進行(xing)控制的(de)。

回到目錄

posted @ 2015-10-14 11:03  張占嶺  閱讀(2134)  評論(0)    收藏  舉報