如何创建 Hapi.js 中的中间件

阅读时长 5 分钟读完

如何创建 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 的结果:

如上面的代码可以看出,在 Hapi.js 中创建中间件是非常简单的。但是,实际上,中间件是一个非常强大的工具,可以用于更复杂的任务,比如处理请求体或处理错误。

下面是一个更复杂的示例,该示例中的中间件将请求体解析为 JSON。

-- -------------------- ---- -------
----- ---- - ----------------
----- --- - ---------------
----- ---- - ----------------


----- ------ - -------------
    ----- -----
    ----- -----------
---


----- ------------- - -- -- -
    ------ ----- --------- -- -- -
        --- -
            ----- - ------- - - --------
            --------------- - --------------------
            ------ -----------
        - ----- ----- -
            ------ ------------------------ ------- ----------
        -
    --
--

-------------------------- -----------------

--------------
    ------- -------
    ----- ----
    -------- --------- -- -- -
        ----- - ----- --- - - ----------------
        ------ ------ -------- --- --- ------ ----- -----
    --
    -------- -
        --------- -
            -------- ------------
                ----- ------------------------
                ---- ------------------------------------------
            --
        -
    -
---
展开代码

上面的代码首先定义了一个名为 bodyValidator 的中间件,它将请求体解析为 JSON 格式。处理程序先尝试解析包含在请求中的 JSON,如果 JSON 解析错误则返回一个 Bad Request 错误。否则,中间件将控制权返回给处理程序,请求中的 payload 被替换为 JSON 对象。

最后,我们定义了一个 POST 路由,它接受两个参数,nameage。我们将验证 name为字串,age为数字,且最小值为 18。

结束语

在本文中,我们介绍了 Hapi.js 中间件的概念,并演示了如何创建简单和复杂的中间件。中间件是一种非常强大的工具,可以帮助我们在处理请求和响应的过程中加入扩展和业务逻辑。熟练掌握中间件是 Hapi.js 开发过程中不可或缺的技能。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67b83ac8306f20b3a65d3c2c

纠错
反馈

纠错反馈