在 Fastify 应用中集成 Swagger 文档的方法

阅读时长 7 分钟读完

Fastify 是一个高效、低开销并可伸缩的 Node.js Web 框架,使用了一个快速 HTTP 引擎,它强调安全、正确性和性能,拥有丰富的插件生态系统。Swagger 是一个标准的、可自动化生成 RESTful API 的开发工具,使用 OpenAPI 规范来描述和文档化 RESTful API。将 Swagger 集成到 Fastify 应用中,可以快速生成 API 文档以及简化 API 的测试流程。本文将介绍如何在 Fastify 应用中集成 Swagger 文档。

安装 Swagger UI

Swagger UI 是一个 JavaScript 应用程序,用于呈现 Swagger 规范生成的文档。可以通过 npm 包管理器安装它:

挂载 Swagger UI

现在有了 Swagger UI,我们需要将它挂载到 Fastify 应用程序的路由上。首先,需要在 Fastify 中启用静态文件服务,以便能够服务 Swagger UI 所需文件:

然后,下一步是创建路由并向客户端提供 Swagger UI:

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

这将在 Fastify 应用根路径下创建一个路由“/docs”,将 Swagger UI 提供给客户端。在这里,我们使用了外部样式表和脚本,因此需要使用“fastify-static”插件来注册一个静态文件服务。使用构建的 Swagger 规范文件(JSON 格式),可以通过 URL 引用它以呈现 Swagger UI。

生成 Swagger 规范

在 Fastify 应用程序中使用 Swagger UI 需要一个 Swagger 规范文件。如果使用 Fastify 框架编写 API,可以使用 fastify-swagger 插件来生成 Swagger 规范。

可以使用以下命令安装 fastify-swagger:

然后,可以将这个插件到 Fastify 应用上:

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

在这里,我们使用“mode: 'static'”配置并指定了 Swagger 规范的 JSON 文件的路径(使用“fastify-swagger”插件自动生成),并启用“exposeRoute”,以便能够访问 Swagger 规范文件资源。

示例代码

完整的 Fastify 应用程序如下:

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

总结

在 Fastify 应用程序中集成 Swagger 文档是一个优秀的选择,它可以极大地促进开发和测试的效率和质量。通过这篇文章的介绍和指导,你可以快速开始使用 Swagger UI 并完整开发你的 Fastify API,并把它们文档化。如果你开始使用 Fastify 和 Swagger,你将获得一个高性能的服务器和一个功能强大且易于使用的开发工具。

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

纠错
反馈