Hapi 是一个流行的 Node.js Web 应用程序框架,它提供了很多有用的功能,如路由、插件、缓存等。在这篇文章中,我们将重点关注 Hapi 路由的实现及最佳实践。
基础路由配置
在 Hapi 中,路由是通过配置路由对象来创建的。每个路由对象都定义了如何响应请求,并指定了请求的 HTTP 方法、路径和处理程序等。下面是一个简单的路由配置示例:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ------ - --- ------------- ----- ---- --- ----- ------ - - - ------- ------ ----- ---- -------- --------- -- -- - ------ ------- -------- - - -- --------------------- ------ -- -- - ----- --------------- ------------------- ------- --- --------------------- -----
在上面的示例中,我们创建了一个 Hapi 服务器并定义了一个路由对象。该路由对象指定了 HTTP GET 方法、路径为根路径 /、处理程序返回字符串 'Hello, world!'。然后我们将该路由对象添加到服务器中,最后启动服务器。
路径参数
在实际应用程序中,我们通常需要使用路径参数来处理动态路径。在 Hapi 中,路径参数可以通过使用花括号包裹在路径中来指定。Hapi 会自动将路径参数解析为路由处理程序的参数。下面是一个例子:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ------ - --- ------------- ----- ---- --- ----- ------ - - - ------- ------ ----- -------------- -------- --------- -- -- - ----- - -- - - --------------- ------ ----- --- ------- - - -- --------------------- ------ -- -- - ----- --------------- ------------------- ------- --- --------------------- -----
在这个例子中,我们定义了一个路由对象,该对象指定了一个路径为 /users/{id} 的路由。当请求到达该路由时,路由处理程序会从请求参数中获取 id 属性,并生成一个响应字符串 'User ID: {id}'。
请求验证
在实际应用程序中,我们通常需要对请求进行验证来确保请求参数的正确性。在 Hapi 中,请求验证可以通过指定一个验证方案来实现。验证方案是一个配置对象,其中包含一个或多个验证方式。下面是一个示例:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ------ - --- ------------- ----- ---- --- ----- ---------- - ------------------------- ----- ------------ - ----- --------- --------- -- - -- -------- ---- ---- ------- ------ - -------- ----- ------------ - -------- - -- -- ----- ------ - - - ------- ------- ----- --------- -------- --------- -- -- - ----- - -------- - - ---------------- -- ---- ---- -- -------- ------ -------- ----- ------------- -- -------- - ----- - ----- ----------- --------- ------ -- --------- - -------- ----------- ----------- ------- - - - -- ----- ---- - ----- -- -- - ----- -------------------------------------------- ---------------------------- -------- - --------- ------------ --- --------------------- ----- --------------- ------------------- ------- --- --------------------- -- ------------------ -- - ------------------- ---------------- ---
在上面的示例中,我们首先定义了一个用户验证函数 validateUser,该函数根据请求参数验证用户并返回一个验证结果对象。然后我们定义了一个路由对象,该对象指定了 HTTP POST 方法、路径为 /users、处理程序将用户保存到数据库中。我们为该路由对象配置了验证方案和请求验证。验证方案采用了基本认证策略,用于验证用户。请求验证采用了用户模式,并验证了请求体的有效性。
错误处理
在 Hapi 中,错误处理是一个重要的主题。当处理程序或插件出现未处理的异常时,Hapi 会生成一个响应并处理该异常。可以通过配置默认错误处理程序来自定义错误响应。下面是一个示例:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ---- - ---------------------- ----- ------ - --- ------------- ----- ---- --- ----- --------- - --- -------------------- - -- -- - ----- ------------------------ ---------- -- ----- ------ - - - ------- ------ ----- --------- -------- --------- -- -- - ------ ----------------------- - - -- --------------------- --------------------------- --------- -- -- - ----- -------- - ----------------- -- --------- ---------- ----- -- ----------------------- - ------ ---------------------------------- - ------ ----------- --- ------ -- -- - ----- --------------- ------------------- ------- --- --------------------- -----
在这个例子中,我们定义了一个抛出异常的处理程序。我们还定义了一个扩展点 onPreResponse,用于处理响应中的异常。如果错误不是 Boom 错误,则生成一个包含异常消息的 Boom 错误响应。最后,我们将路由对象添加到服务器中,并启动服务器。
总结
在本文中,我们详细介绍了 Hapi 路由的实现及最佳实践。我们首先介绍了基础路由配置,然后介绍了路径参数、请求验证和错误处理。使用这些技术,你可以轻松构建可靠、高性能的 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6454f9e9968c7c53b08ab7b4