如何创建 Hapi.js 中的中间件
Hapi.js 是一个使用 Node.js 构建的 Web 应用框架,它允许你构建高度可测试和可扩展的 Web 应用。在 Hapi.js 中,中间件是非常重要的一个概念,可以帮助我们在处理请求和响应的过程中加入扩展和业务逻辑。在这篇文章中,我们将深入了解如何在 Hapi.js 中创建中间件。
什么是中间件?
在 Hapi.js 中,中间件实际上是一系列处理程序函数,它们按照定义的顺序被执行,并且可以对请求和响应进行修改。中间件可以添加请求、响应、错误处理、身份验证和其他逻辑来处理 HTTP 请求,以便在响应发送回客户端之前对请求进行操作或进行非标准操作。
创建 Hapi.js 中间件
首先,让我们来看一下如何在 Hapi.js 中创建一个简单的中间件。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ------------- ----- ----- ----- ----------- --- ----- ------------ - ----- --------- -- -- - ------------------- --- ---------- ----- ------ - ----- ----------- ------------------ --- ---------- ------ ------- -- ----------------------- -------------- -------------- ------- ------ ----- ---- -------- --------- -- -- - ------ ------ -------- - ---展开代码
上面的代码使用 server.ext()
函数在 Hapi.js 中注册了一个名为 myMiddleware
的中间件。server.ext()
接受两个参数,第一个是事件名称,第二个是事件处理程序,也就是我们刚刚定义的中间件。
这个中间件会在每个请求到达服务器之前被调用,并打印一条 Before the handler
的消息。然后中间件将控制权传递给下一个处理程序,h.continue
是一个 Promise,它将控制权传递给下一个中间件或路由处理函数。当下一个处理程序执行完毕后,中间件会再次被调用,并打印一条 After the handler
的消息。最后,这个中间件返回 Promise,它将 Promise 的结果传递给下一个处理程序或路由处理器。
下面是执行上述代码在浏览器中访问 localhost:3000 的结果:
Before the handler After the handler
如上面的代码可以看出,在 Hapi.js 中创建中间件是非常简单的。但是,实际上,中间件是一个非常强大的工具,可以用于更复杂的任务,比如处理请求体或处理错误。
下面是一个更复杂的示例,该示例中的中间件将请求体解析为 JSON。
-- -------------------- ---- ------- ----- ---- - ---------------- ----- --- - --------------- ----- ---- - ---------------- ----- ------ - ------------- ----- ----- ----- ----------- --- ----- ------------- - -- -- - ------ ----- --------- -- -- - --- - ----- - ------- - - -------- --------------- - -------------------- ------ ----------- - ----- ----- - ------ ------------------------ ------- ---------- - -- -- -------------------------- ----------------- -------------- ------- ------- ----- ---- -------- --------- -- -- - ----- - ----- --- - - ---------------- ------ ------ -------- --- --- ------ ----- ----- -- -------- - --------- - -------- ------------ ----- ------------------------ ---- ------------------------------------------ -- - - ---展开代码
上面的代码首先定义了一个名为 bodyValidator
的中间件,它将请求体解析为 JSON 格式。处理程序先尝试解析包含在请求中的 JSON,如果 JSON 解析错误则返回一个 Bad Request
错误。否则,中间件将控制权返回给处理程序,请求中的 payload
被替换为 JSON 对象。
最后,我们定义了一个 POST 路由,它接受两个参数,name
和 age
。我们将验证 name
为字串,age
为数字,且最小值为 18。
结束语
在本文中,我们介绍了 Hapi.js 中间件的概念,并演示了如何创建简单和复杂的中间件。中间件是一种非常强大的工具,可以帮助我们在处理请求和响应的过程中加入扩展和业务逻辑。熟练掌握中间件是 Hapi.js 开发过程中不可或缺的技能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b83ac8306f20b3a65d3c2c