Hapi 是一个流行的 Node.js Web 框架,它有着灵活的路由和插件系统,使得开发者可以快速地构建 Web 应用程序。在大型 Web 应用程序中,请求验证是一项不可或缺的安全措施。Hapi-Request-Validation 是 Hapi 插件之一,它提供了一个易于使用的方式来验证请求。在本文中,我们将学习如何在 Hapi 应用程序中使用 Hapi-Request-Validation 进行请求验证。
安装和配置 Hapi-Request-Validation
要使用 Hapi-Request-Validation,我们需要先安装它。可以使用 npm 快速安装:
npm install hapi-request-validation
安装完成之后,我们需要在 Hapi 应用程序中注册它。可以在应用程序的启动文件中添加以下代码:
-- -------------------- ---- ------- ----- --------------------- - ---------------------------------- -- --- ----- ------ - ------------- -- --- -- -- --- ----- -------- ----- -- - -- --- ----- ----------------- ------- --------------------- -- -- --- ----- -------------- ------------------- ------- -- -------------------- - -- --- ----------------- -- - ------------------ --------------- --
如上所示,我们向 server.register
方法传递了一个包含插件选项的对象。其中 plugin
属性指定了我们要注册的插件。
定义请求验证规则
我们现在已经安装和注册了 Hapi-Request-Validation 插件。接下来,我们需要定义一个请求验证规则。我们可以把验证规则定义在路由处理程序中,也可以定义在独立的文件中。在本文中,我们将在路由处理程序中定义它们。
下面是一个简单的示例,它验证了查询参数 name
的存在性,并且它不应为空。
-- -------------------- ---- ------- ----- --- - -------------- ----- ------- - --------- -- -- - ----- ---- - ------------------ ------ ------- --------- - -------------- - - ------- ------ ----- ------------ -------- -------- - --------- - ------ ------------ ----- ----------------------- -- - - -
如上所示,我们使用 Joi 来定义查询参数 name
的验证规则。Joi 是一个用于编写验证规则的库,它支持多种验证规则类型,例如字符串、数字、数组、对象等等。在此示例中,我们使用了 Joi.string()
来定义一个字符串类型的验证规则,并使用 Joi.required()
来定义一个必填选项。
我们将验证规则传递给了路由处理程序的 options
属性。这个属性包含了 Hapi-Request-Validation 的所有配置选项。在这个例子中,我们只配置了 query
中的验证规则,它验证了查询参数 name
的存在性和必填条件。
错误处理和自定义错误消息
Hapi-Request-Validation 插件会自动验证请求,并在发现错误时抛出验证错误。如果未能处理这个错误,会返回一个 400 错误响应。为了更好的用户体验和安全性,我们可以自定义错误消息并返回它们。Hapi-Request-Validation 提供了多种自定义错误消息的方式。
我们可以在定义验证规则时使用 Joi
的 .messages()
方法来定义自定义错误消息。例如,以下代码将定义一个自定义错误消息,它会在 name
参数缺失时返回一个消息。在这个例子中,我们将错误消息定义为 Invalid request parameters
。
-- -------------------- ---- ------- ----- ------- - --------- -- -- - ----- ---- - ------------------ ------ ------- --------- - -------------- - - ------- ------ ----- ------------ -------- -------- - --------- - ------ ------------ ----- ---------------------------------- --------------- -------- ------- ----------- -- -- - - -
另一种自定义错误消息的方式是定义一个自定义错误处理程序。可以通过 options
的 failAction
属性来定义自定义错误处理程序。以下是一个自定义错误处理程序的示例:
-- -------------------- ---- ------- ----- ------- - --------- -- -- - ----- ---- - ------------------ ------ ------- --------- - ----- ------ - --------- -- ---- -- - ----- ------------------------ ------- ------------ - -------------- - - ------- ------ ----- ------------ -------- -------- - --------- - ------ ------------ ----- ----------------------- --- ----------- ------ - - -
如上所示,我们定义了一个自定义错误处理程序 onFail
,它会在验证错误时抛出一个 Boom.badRequest
错误,该错误返回一个 400 响应。
结论
Hapi-Request-Validation 是一个易于使用的库,它提供了一种简单的方式来验证请求参数。在本文中,我们学习了如何在 Hapi 应用程序中使用 Hapi-Request-Validation 进行请求验证,并且展示了如何自定义错误消息和错误处理程序。当你构建 Web 应用程序时,请始终考虑到安全性,并使用 Hapi-Request-Validation 来验证请求数据。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676f563de9a7045d0d71c77e