回到目录

在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得到下面的结果

json 1

地点的成效类似于c# mvc里的重写ViewResult,都以对出口响应流举行支配的。

回到目录

相关文章

网站地图xml地图