模型中sails.js蓝图中的自定义XML响应?

时间:2015-02-11 21:23:31

标签: sails.js

我是sails.js的新手,我有一个简单的蓝图模型。现在,我的控制器和模型几乎是空的,除了模型上的属性定义。

通过POST创建模型后,我希望响应是自定义XML响应(我生成的一些纯文本),而不是标准的JSON响应。我想我可以覆盖控制器上的整个create方法,本质上是复制并粘贴默认的代码,只是覆盖响应,但这看起来真的很重。

必须有更好的方法吗?

请注意,我只是尝试为此特定模型执行此操作,而不是一般。

谢谢!

3 个答案:

答案 0 :(得分:3)

最好的方法是简单地将标题添加为提到的DigitalDesignDj。

/**
* TestController
*/
module.exports = {
    create: function(res, req) {
        // get your data
        var xml = 'some xml string';

        res.setHeader( "Content-type", "text/xml" );
        res.send(xml);
    }
}

答案 1 :(得分:2)

更改特定回复的标头。

response.setHeader( "Content-type", "text/xml" );

当您已经拥有response.send()

的XML时

答案 2 :(得分:1)

如果您的结果是针对该单个模型上的所有操作执行此操作,则可以简单地覆盖toJSON方法以在模型本身中生成XML而不是JSON。然后,如果您运行的蓝图,当您点击这些端点时,它将吐出XML而不是json。

但是,您的问题特定于创建操作。在这个例子中,我会询问您是否正在运行非Ajax请求的备用视图文件。如果没有,只需将视图文件放入使用xml布局查看/ foo / create。[ejs,jade,ect ...]的create动作中。响应将看到视图文件并使用该文件覆盖json输出。这意味着您只需添加该单个文件即可更改任何代码。

他们有十几种方法可以实现这一点,而您的问题需要更多详细信息(如评论中所述),以便对您的用例进行具体回答。