Articles of hapijs

在Node.js中,如何编写unit testing页面速度?

我正在进行网站重新平台/重新devise。 我们将使用Node.js和Hapi。 我想添加将测量页面加载速度的unit testing。 有没有办法使用摩卡和柴做到这一点? 有没有专门用于页面速度testing的框架?

在hapijs中只导入一次插件并在任何地方使用

我应该使用名为hapi-mongoose-db-connector mongoose hapi-mongoose-db-connector的插件进入我的hapijs应用程序。 在存储库页面中,开发人员build议您可以正确导入的方式。 它说下面的方式是坏的方法: # from the server mongoose = server.pack.plugins['hapi-mongoose-db-connector'].mongoose # or from a plugin mongoose = plugin.plugins['hapi-mongoose-db-connector'].mongoose 并阻止使用它。 相反,他build议采取以下方式: 你什么都不做,只需要在你的插件mongoose。 由于npm要求是单身人士(代码只有一次加载,这很好) 但是他没有示例。 在这一点上,我不太确定如何使用它。 我不会在每一个js文件mongoose呼叫。 我会在我的应用程序的某个地方调用它,并在我创build数据库模型的js文件中使用它。 你知道这些情况下的最佳做法吗?

使用Hapijs和贝尔与叽叽喳喳提供商。 如何使用Bell模块处理来自Twitter的授权拒绝?

我使用Hapi框架(nodejs)与Bell模块一起使用Twitter提供程序。 用github页面给出的例子来获得一个工作代码非常简单。 我访问/login路线,我被redirect到Twitter,在那里我授权的应用程序,然后我被redirect回/login?oauth_token = xxxxxxx&oauth_verifier = xxxxxxx在那里我可以访问的用户configuration文件在request.auth.credentials 。 当我试图拒绝应用程序时,问题出现了。 我不是点击Twitter上的“login”button,而是点击“取消”button,然后点击“返回到网站名称 ”button。 最后一个button将我redirect到/ login?denied = xxxxxx ,然后我被redirect到Twitter以批准该应用程序。 我尝试使用另一个例子在同一页面https://github.com/hapijs/bell#handling-errors中处理这种情况,但不能得到它的工作。 server.route({ method: ['GET', 'POST'], path: '/login', config: { auth: { strategy: 'twitter', mode: 'try' }, handler: function (request, reply) { if (!request.auth.isAuthenticated) { return reply('Authentication failed due to: ' + request.auth.error.message); } return reply.redirect('/home'); } } }); 看来在检查request.auth之前,它会解释/ […]

使用Hapi.js运行第三方命令行工具

在我的应用程序中,我需要使用一个命令行工具,但是我没有看到任何方式去做,而不使用npm模块。 我正在使用核心节点,除了命令行工具。

节点JS / Hapi图片上传和安全

像许多networking服务一样,我们需要获取访问者的个人资料图片。 这是通过一个简单的hapi上传脚本完成的。 我们现在想知道哪些最佳做法可以防止我们获得可能包含脚本的恶意图像,这些图像可以直接或通过漏洞执行。 什么是最好的安全过程? 调整图像大小? 但是可用的几种格式呢? 使用两个不同的库,将所有内容都转换为PNG格式的两步传递? 有没有为此目的而编写的npm? build议需要。

Hapi Swagger跳过某些端点

由于npm模块hapi-swagger不支持file upload端点,所以我需要一种在我的testing中跳过某些端点的方法。 我已经检查了文档,没有beforeEach或任何方式来检查testing期间哪个端点是运行的。 目前我刚刚把我的环境设置为TEST,并且在目标处理程序中有一个if,但是这很麻烦和复杂。 有什么办法可以跳过端点吗?

Android Facebooklogin和服务器端身份validation

我遇到了困难,围绕以下几点: 与Facebooklogin的Android应用程序 NodeJS(Hapi.js)服务器后端 在过去,我使用一个简单的用户名密码系统,使得创build服务器端会话和validation服务器请求(例如:获取距我50公里内的所有用户)非常容易。 我删除了该系统,并select在Android应用程序的Facebooklogin,因为这将有助于减less一些负载(例如:我们不需要存储我们自己的图像…)。 问题是,我不知道如何处理服务器端身份validation。 所有的GET,POST,…只能由使用Facebook集成loginAndroid应用程序的用户完成。 我在Stackoverflow上发现了以下主题: Facebook的身份validation到我的服务器使用Android 用我的服务器提供安全的Facebook身份validation 我只是想要一个更新的意见,是否足够安全的发送令牌到我的节点服务器,并使用它来检查一个有效的身份validation的Facebook API调用? 如果有更好的方法,请分享! 提前致谢。

Hapijs onPreResponse,转发回应

对于我的api我需要有一个md5结果的所有路线,所以我使用: server.ext('onPreResponse', function(request, reply) { var content = request.response.source; var code = request.response.statusCode; if(typeof request.headers.md5 != 'undefined' && code == 200) { content = md5(content); } if(!DEBUG && code != 200){ content = "Error"; } reply(content).code(code); }); 当响应是404错误, request.response没有response.statusCode …我可以处理这个: if(typeof code == 'undefined'){ code = 404; } 但是,当我尝试查看与Lout生成的文档,我有这样的: 我如何正确地转发代码消息?

我可以将控制转移到Hapi.js中的另一个处理程序吗?

我在Hapi.js中有一个主要的路由处理程序,我需要根据发送的参数将控制权发送给另一个处理程序。 例如,如果我发布一个types为“twilio”的消息,我想将请求转发到包含在我的twilio路由文件中的路由处理程序。 如何将处理程序转发到另一个处理程序?

有效的方式来处理REST Apis中的错误情况

我在node.js中编写了一个REST API。 我期望最多5个参数到达我的GET请求。 如果有不明身份的参数,我希望发送400错误的请求。 目前我正在以如下方式处理: server.route({ method: "GET", path : "/test", handler : function (request, reply) { if (request.query.a || request.query.b || request.query.c || request.query.d || request.query.e) { // do some processing } else { reply("No valid parameters").code(400); } } }); 现在,如果有一些有效的和一些无效的情况下,这不处理案件。 我可以通过使用更多的条件来解决这个问题。 但我只是想知道是否有一个标准或更有效的方法是由开发人员使用