我刚刚开始使用Loopback API框架,并且想要定义一个中间件,它会在将req数据传递给下一个函数之前对其进行预处理。但我不知道如何访问req
对象中的数据。有什么帮助吗?
E.g。
function middleWareThatAddAPropertyToTheRequestJSON(req, res, next) {
// Of course I get undefined for req.data, but that's approximately what I want.
req.data.somethingIWouldLikeToChange = "blahblahblah";
}
编辑:
我是如何创建应用程序的(在server.js中)
var loopback = require('loopback');
var boot = require('loopback-boot');
var app = module.exports = loopback();
app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};
// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
if (err) throw err;
// start the server if `$ node server.js`
if (require.main === module)
app.start();
});
middleware.json的一部分(与server.js在同一目录中)
...
"initial": {
...
"./middleware/rest/middlewareThatAddAPropertyToTheRequestJSON": {}
},
...
中间件/休息/ middlewareThatAddAPropertyToTheRequestJSON.js:
module.exports = function() {
return function middlewareThatAddAPropertyToTheRequestJSON(req, res, next) {
// TODO: add sth to the req
next();
};
};
另一个编辑:
也许我不准确。我想修改一个POST请求。
e.g。客户帖子:
{" a":" b"}
我想在请求中添加键值对。怎么办呢?
答案 0 :(得分:1)
事实证明,我们只能通过Readable.read()
对象的req
方法读取请求消息,该方法是http.IncomingMessage
类的实例(如{{3}中所述}})。而且(对我来说)似乎无法修改消息。如果我们必须以任何方式操纵请求消息,则不会通过req
对象完成。如@IvanSchwarz所述,在其他步骤中通常会这样做,例如:在将其存储到数据库之前,将消息传递给任何方法等等。
感谢您的帮助:)