GraphQL 是一个强大的查询语言和运行时环境,它可以帮助前端开发人员更好地管理和组织 API。构建一个 GraphQL API 的过程中,一个清晰、有层次结构的项目结构非常关键。在本文中,我们将介绍一个建议的 GraphQL 项目结构,并提供了示例代码。
项目结构
我们认为,一个好的 GraphQL 项目应该具备以下目录结构:
├── src │ ├── graphql │ ├── models │ ├── resolvers │ └── typeDefs ├── index.js └── package.json
接下来,我们会详细讲解每一个目录的作用。
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