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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:Node.js与Sails~自定义响应体responses,如需转载请自行联系原博主。

目录
相关文章
|
6月前
|
开发框架 前端开发 JavaScript
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
|
8月前
|
JavaScript 前端开发
Node-RED 规则引擎重构:添加自定义节点
Node-RED 规则引擎重构:添加自定义节点
308 1
|
8月前
|
前端开发 JavaScript
使用JavaScript实现复杂功能:构建一个自定义的拖拽功能
使用JavaScript实现复杂功能:构建一个自定义的拖拽功能
|
5月前
|
存储 前端开发 JavaScript
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
|
3月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
94 4
|
5月前
|
前端开发 微服务 API
微服务浪潮下的JSF革新:如何在分散式架构中构建统一而强大的Web界面
【8月更文挑战第31天】随着微服务架构的兴起,企业将应用拆分成小型、独立的服务以提高系统可维护性和可扩展性。本文探讨如何在微服务架构下构建和部署JavaServer Faces (JSF) 应用,通过RESTful服务实现前后端分离,提升灵活性和适应性。
68 1
|
5月前
|
前端开发 程序员
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字)。赶紧学会了,来制作属于我们程序员的浪漫吧!
147 0
|
6月前
|
JavaScript NoSQL Serverless
函数计算产品使用问题之如何创建一个自定义运行时并指定Node.js版本
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
JavaScript 前端开发 数据安全/隐私保护
Vue.js 表单处理技巧大揭秘!v-model 与自定义验证综合运用,打造高效表单处理体验!
【8月更文挑战第31天】Vue.js 是一款备受欢迎的前端框架,其表单处理功能强大且灵活。v-model 指令可实现双向数据绑定,简化表单元素值与 Vue 实例数据的同步过程;结合自定义验证规则,则能确保用户输入数据符合特定要求。无论是简单的单字段校验还是复杂的多字段验证,Vue.js 均提供了简洁有效的解决方案,有效提升了表单处理效率及用户体验。通过综合运用 v-model 和自定义验证,开发者能够实时反馈错误信息并控制表单状态,从而增强应用的交互性与可靠性。
74 0
|
5月前
|
JavaScript PHP 开发者
PHP中的异常处理与自定义错误处理器构建高效Web应用:Node.js与Express框架实战指南
【8月更文挑战第27天】在PHP编程世界中,异常处理和错误管理是代码健壮性的关键。本文将深入探讨PHP的异常处理机制,并指导你如何创建自定义错误处理器,以便优雅地管理运行时错误。我们将一起学习如何使用try-catch块捕获异常,以及如何通过set_error_handler函数定制错误响应。准备好让你的代码变得更加可靠,同时提供更友好的错误信息给最终用户。