gpt4 book ai didi

node.js - Sailsjs中间件解析res.body

转载 作者:太空宇宙 更新时间:2023-11-03 21:59:05 24 4
gpt4 key购买 nike

我是 JS 新手,开始使用 sails 框架。我需要解析中间件中的 http res 主体,以将作业放入 celery 队列中。我已经尝试使用船长 - 根据文档 - 但我总是得到 res.body 的值作为未定义。当我记录响应时,我只得到相同的元信息。

下面是我正在尝试的中间件代码 - 有人可以让我知道我做错了什么吗?

order: [
'startRequestTimer',
'cookieParser',
'session',
'requestLogger',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
],

requestLogger: function (req, res, next) {
var start = (new Date().getTime());
res.on('finish', function(){
console.log(res.body)
});
return next();
},

bodyParser: require('skipper')

PS:我并不迷恋船长——只要能够解析结果的主体就一切都很好。谢谢!

最佳答案

Skipper 用于解析请求主体。在 Sails(以及所有基于 Express 的应用程序)中传递的 response 对象不包含实际响应,它只是用于形成响应的方法集合。一旦您使用 res.send 之类的内容触发响应,就没有简单的方法可以拦截它。相反,您可以使用 Sails custom response ,并在实际发送输出之前对自定义响应中的数据执行任何您想要的操作。这里的最佳实践是使用 res.ok (“ok”响应)。所以在你的 Sails Controller 中,你可以这样做

res.send(someData)

相反,这样做

res.ok(someData)

然后在您的 api/responses/ok.js 文件中,将作业添加到您的队列或任何您需要执行的操作中。

此外,将 config/http.js 文件放回到您找到它的方式,直到您确实需要弄乱中间件或主体解析器;-)

关于node.js - Sailsjs中间件解析res.body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32324488/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com