zoukankan      html  css  js  c++  java
  • Node.js与Sails~自定义响应体responses

    回到目录

    在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,都是对输出响应流进行控制的。

    回到目录

  • 相关阅读:
    react: redux-devTools
    react: menuService
    react: navigator
    react style: 二级菜单
    spark复习笔记(5):API分析
    spark复习笔记(4):spark脚本分析
    maven 打包Scala代码到jar包
    spark复习笔记(3)
    mongoDB学习笔记(2)
    sparkStreaming复习笔记(1)
  • 原文地址:https://www.cnblogs.com/lori/p/4876884.html
Copyright © 2011-2022 走看看