所以我一直在使用 Sailsjs
开发一个 SPA
项目。问题是:
加载第一页时,我在 Controller 中使用 res.view
或 res.render
。但是,对于后续请求,我不想使用 res.view
或 res.render
,而是想使用 res.json
.
现在我使用的方法是:
返回 req.param('json') ? res.json(myObj) : res.view('layout', myObj);
这是可行的,但我正在寻找一种更通用和抽象的方法,在该方法中我的 Controller 本身会知道(基于req.param('json')
)是否使用res.view
或 res.json
,无需我明确告知。
有什么帮助吗?
最佳答案
这就是 res.ok()
的用途。
在下面的 Controller 操作中,res.ok
将使用 data
作为 View 局部变量显示 myAction.ejs,或者响应data
作为 JSON,具体取决于请求的传入方式(即通过 AJAX、套接字或常规浏览器请求):
module.exports = {
myAction: function(req, res) {
var data = {someKey: "someVal"};
return res.ok(data);
}
}
在内部,ok
响应使用 req.wantsJSON
来确定要做什么;它会检查 header ,查找 xhr
对象,并且通常会尽力猜测您的意图。 req.wantsJSON
适用于所有请求(req.isSocket
也是如此),因此您可以根据需要自行使用它们。
关于javascript - 风 sails js : Setting response method based on request parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25682116/