Django RESTful API 中如何实现 Swagger 文档自动生成

阅读时长 8 分钟读完

什么是 Swagger

Swagger 是一个流行的 RESTful API 的设计工具,提供自动生成 API 文档的功能,可以使得 API 文档更加规范化并且易于阅读和理解。Swagger 可以根据 API 的定义文件自动生成 API 的文档,所以可以避免手写文档的重复工作,并且可以保持文档与代码同步。

Django RESTful API 中的 Swagger

Django REST framework 提供了一个用于 API 文档自动生成的库,即 drf-yasg,它可以根据 Django RESTful API 中的视图函数和模型自动生成 API 文档的 Swagger 格式定义。这里将介绍如何在 Django RESTful API 应用中使用 drf-yasg 来自动生成 Swagger 文档。

步骤

1. 安装 drf-yasg

可以使用 pip 安装 drf-yasg:

2. 配置 settings.py

首先,需要将 drf-yasg 加入 INSTALLED_APPS 中:

然后,在 settings.py 中增加如下的配置:

其中,API 文档的信息可以使用下面这个函数生成:

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

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

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

3. 编写 views.py

在 views.py 中,在 Django RESTful API 的视图函数中增加如下注释,定义视图函数的参数、返回值和响应状态码:

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

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

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

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

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

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

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

4. 编写 urls.py

在 urls.py 中,增加如下代码:

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

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

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

其中,我们定义了两个 URL,一个用来接收 Swagger 文档请求,另一个用来显示文档,使用了 Swagger UI 和 ReDoc 两个工具。

5. 运行应用

在终端中运行如下命令,启动 Django RESTful API 应用:

然后,在浏览器中输入 http://127.0.0.1:8000/docs 即可访问生成的 Swagger 文档。

总结

Django RESTful API 中使用 drf-yasg 可以方便地生成 Swagger 格式的 API 文档,避免手写文档带来的重复繁琐。同时,在视图函数中使用注释的方式,能够更加清晰地定义 API 接口的参数、返回值和状态码,文档的可读性也更加强。

示例代码

完整示例代码可以在 GitHub 上查看。

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

纠错
反馈