草庐IT

javascript - Hapi.js 自定义 404 错误页面

Hapi框架非常新。我正在尝试制作自定义错误页面。如何将404.html页面路由到404响应?希望处理程序像这样handler:function(request,reply){reply.file('./static/website/javascript/main.js');} 最佳答案 你可以使用这样的东西:server.route({method:'*',path:'/{p*}',//catch-allpathhandler:function(request,reply){reply.file('./path/to/404.ht

javascript - 是否可以在 hapi 中定义全局基本路径

我想要每个hapi路由路径以前缀(/api/1)开头,而不将其添加到每个路由。这可能吗?以下路径应该在路径/api/1/pets而不是/pets中可用constHapi=require('hapi');constserver=newHapi.Server();server.route({method:'GET',path:'/pets'}) 最佳答案 似乎您不能对整个应用程序进行全局操作。但是可以为插件中定义的所有路由添加前缀:server.register(require('a-plugin'),{routes:{prefix:'

javascript - 使用 Good 在 Hapi.js 中记录请求和响应负载

我正在使用Hapi.js为我的移动应用程序实现RESTfulAPI。我集成了用于记录请求、错误和其他事件的Good。对我来说效果很好。但是,尚不清楚如何记录请求和响应有效负载(JSON对象)。如有任何帮助,我将不胜感激。 最佳答案 这会记录您需要的内容:server.on('response',function(request){console.log(request.info.remoteAddress+':'+request.method.toUpperCase()+''+request.url.path+'-->'+reque

javascript - 如何让hapi很好地忽略特定路线

我希望忽略特定路由的日志记录,因为亚马逊每隔几秒就会轮询一次健康检查路由-它只会给我们的日志增加噪音。我是否可以为好的插件设置特定于路由的配置,以便它只忽略单个特定路由? 最佳答案 这里有一些至少适用于hapi16.1、good7.1和good-squeeze5.0的东西。这个想法是标记健康检查路由的日志记录,然后使用good-squeeze排除该路由。配置good/good-squeeze排除“health”:server.register({register:Good,options:{reporters:{console:[{

javascript - 在 hapi.js 中,身份验证方案和策略有什么区别?

hapi.js文档不是特别是(完整)初学者友好1...ServerAuthScheme之间的区别是什么?和Strategy?我们需要两者吗?1如果有人可以解释我们将PR到文档中的区别。还张贴在:https://github.com/hapijs/discuss/issues/163 最佳答案 是的,两者都需要。它们完全是不同的东西。他们在这里解释:http://hapijs.com/tutorials/auth.但让我以不同的方式重述一下:计划方案是一种通用的身份验证类型。基本身份验证和摘要式身份验证是不同类型的身份验证,在hapi

javascript - 使用 Joi 验证请求时如何避免 Hapi.js 发送 400 错误

Hapi.jsValidationwithJoi+failAction问题。情况我们想构建一个“传统”服务器端-仅使用Hapi呈现应用程序。我正在尝试理解如何避免返回“raw”400Joi验证失败时给客户端的错误:我们要拦截这个“emailnotallowedtobeempty”validationerror,并在html模板中显示给客户端,而不是简单地返回400错误。@AdriVanHoudt建议我们应该:"LookatfailActionunderhttp://hapijs.com/api#route-options"因此我们将failAction:'log'添加到/registe

javascript - 如何用 sinon 模拟 hapi.js 回复以进行单元测试

是否有简单的方法来模拟hapi回复对象/函数以便于进行单元测试?我看到的hapi示例都使用server.inject和“实验室”框架进行测试。我很想知道如何继续使用mocha,并希望直接测试Controller而不是注入(inject)服务器。我应该使用sinon来模拟回复对象吗?测试/post.jsbefore(function(){PostController=proxyquire('../controllers/post',{'mongoose':mongooseMock});});it('shouldbeabletocreateapost',function(done){var

javascript - 如何使用 hapi.js 在同一台服务器上支持多个网站?

假设我想在同一台服务器上使用单个IP地址(即虚拟主机)托管我的2个网站(cats.com和dogs.com)。我想用hapi.js编写它们并让它们作为单个进程运行。这些网站可能有重叠的路径,例如它们可能都有一个/about页面。我如何使用hapi实现它? 最佳答案 使用hapi实现这一点的一个好方法是将您的不同站点放入单独的plugins中。并在加载插件时使用vhost修饰符,最好使用Glue.这是一个例子:sites/dogs.jsexports.register=function(server,options,next){//P

javascript - 使用 Hapi.js 框架的多个服务器实例

出于几个原因,我正在接近这个node.js框架。简单、出色的模块化和开箱即用的快速配置。很快就遇到了我在express.js框架学习过程中从未见过的Pack这个概念。来自官方指南的以下示例:varGood=require('good');server.pack.register(Good,function(err){if(err){throwerr;//somethingbadhappenedloadingtheplugin}server.start(function(){server.log('info','Serverrunningat:'+server.info.uri);});

javascript - 从另一个路由调用一个 hapi 路由

我是HapiJS的新手。我正在构建一个服务,其中有两条路线/route1和/route2都使用插件架构。我已将两者都注册为我的list文件中的插件。我想从/route2调用/route1,所以/route2取决于来自/route1的负载回复。我一直在考虑将/route2的逻辑放在预处理程序的/route1上,但我想将它们分开。不知道如何从另一个调用已注册的插件,因为两个插件(路由)都在发出网络请求。感谢阅读。谢谢。 最佳答案 当您指定不想使用共享处理程序/路由先决条件(这是我的第一选择)时,您可以使用http客户端(Wreck、re