1
在Hapi插件中有没有办法访问请求(是否存在关联的路由)?如何访问插件中的请求?
我知道我可以在我的插件中访问server
,但似乎如果我尝试在插件的上下文中设置任何事件处理程序来获取请求,它们从不会触发。
例如,预期了以下工作:
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({port: 3000});
server.start(function() {
console.log('hapi server started @ ', server.info.uri);
});
server.ext('onRequest', function (request, reply) {
console.log(request);
return reply.continue();
});
server.route({
path: '/',
method: 'GET',
handler: function (request, reply) {
reply({yo: 'noid'});
server.log(['trace'], request);
}
});
如果我尝试插件的范围内同样的事情,没有任何反应:
// Hapi App
var Hapi = require('hapi');
var server = new Hapi.Server();
server.register({ register: require('samplePlugin') }, function (error) {
if(error) {
console.log('failed to load plugin:', error);
}
});
server.connection({port: 3000});
server.start(function() {
console.log('hapi server started @ ', server.info.uri);
});
server.route({
path: '/',
method: 'GET',
handler: function (request, reply) {
reply({yo: 'noid'});
server.log(['trace'], request);
}
});
// Hapi Plugin
var samplePlugin = function (server, options, next) {
'use strict';
server.ext('onRequest', function (request, reply) {
console.log(request);
return reply.continue();
});
next();
};
exports.register = logger;
exports.register.attributes = { pkg: require('./package.json') };
任何帮助将非常感激。我也很乐意听到其他方法。也许我正走向错误的道路(我是Hapi的新手)。谢谢阅读。
我们如何可以访问onRequest server.ext request.payload我总是得到request.payload为空:您可以通过
server.start()
部分迁入的server.register()
回调很容易地解决你的代码 –