一个 GraphQL API 项目结构样例

阅读时长 6 分钟读完

GraphQL 是一个强大的查询语言和运行时环境,它可以帮助前端开发人员更好地管理和组织 API。构建一个 GraphQL API 的过程中,一个清晰、有层次结构的项目结构非常关键。在本文中,我们将介绍一个建议的 GraphQL 项目结构,并提供了示例代码。

项目结构

我们认为,一个好的 GraphQL 项目应该具备以下目录结构:

接下来,我们会详细讲解每一个目录的作用。

graphql 目录

该目录用于存储 GraphQL 的对外接口。在这个目录中,我们需要创建一个公共的 GraphQL Schema。GraphQL Schema 用于定义 API 的数据类型以及数据查询的规则。虽然 GraphQL Schema 的定义可以分布在不同的文件中,但是我们建议将所有的 Schema 集中在一个文件中,以方便管理。一般来说,文件名为 schema.js。

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

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

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

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

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

models 目录

该目录用于存储应用程序中的数据模型,这些数据模型可以用于定义数据类型以及对这些类型进行 CRUD 操作。对于 GraphQL 项目来说,数据模型通常是由 ORM (例如 Sequelize 或 Mongoose)生成的。除了数据模型之外,我们也可以将相关的数据库文档也保存在这个目录中。

resolvers 目录

该目录用于存储 GraphQL 的数据解析器。数据解析器是用于定义具体的数据查询逻辑,这些逻辑通常是由后端数据模型或 API 提供的数据。在 resolvers 目录中,我们需要创建解析器,以将模型中的数据映射到针对特定查询的响应。例如,如果我们要查询书籍数据,则需要从数据库中获取相关的数据并提供响应。

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

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

typeDefs 目录

该目录用于存储 GraphQL Schema 定义。Schema 定义描述了可操作数据的类型以及可执行的查询和变更。在 typeDefs 目录下,我们提供了 GraphQL Schema 的相关文件类型,包括 Book 类型和 Author 类型(由 Query 类型组成)。

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

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

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

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

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

示例代码

下面是我们使用上述目录结构组织的一个 GraphQL API 的示例代码:

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

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

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

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

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

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

总结

在这篇文章中,我们介绍了一个 GraphQL API 项目的一个常见的目录结构,并提供了一些示例代码。使用这个推荐的目录结构,我们可以轻松地组织和管理一个 GraphQL 项目,以便更方便地添加,维护和扩展 API 功能。我们建议你对这个结构进行修改,以适应你的具体需求,并在实践中使用它来构建更好的 GraphQL API。

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

纠错
反馈