我是sails.js的新手,我有一个简单的蓝图模型。现在,我的控制器和模型几乎是空的,除了模型上的属性定义。
通过POST创建模型后,我希望响应是自定义XML响应(我生成的一些纯文本),而不是标准的JSON响应。我想我可以覆盖控制器上的整个create方法,本质上是复制并粘贴默认的代码,只是覆盖响应,但这看起来真的很重。
必须有更好的方法吗?
请注意,我只是尝试为此特定模型执行此操作,而不是一般。
谢谢!
答案 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()
答案 2 :(得分:1)
如果您的结果是针对该单个模型上的所有操作执行此操作,则可以简单地覆盖toJSON方法以在模型本身中生成XML而不是JSON。然后,如果您运行的蓝图,当您点击这些端点时,它将吐出XML而不是json。
但是,您的问题特定于创建操作。在这个例子中,我会询问您是否正在运行非Ajax请求的备用视图文件。如果没有,只需将视图文件放入使用xml布局查看/ foo / create。[ejs,jade,ect ...]的create动作中。响应将看到视图文件并使用该文件覆盖json输出。这意味着您只需添加该单个文件即可更改任何代码。
他们有十几种方法可以实现这一点,而您的问题需要更多详细信息(如评论中所述),以便对您的用例进行具体回答。