gqlgen:使用 GraphQL 自动生成代码

阅读时长 6 分钟读完

GraphQL是一种新型的API查询语言,可以用来替代RESTful API,它有比REST更好的可扩展性和强大的类型系统。gqlgen是使用Go语言实现的自动生成GraphQL代码的工具。它可以根据GraphQL模式自动生成查询解析器、数据加载器和类型定义等基础代码,这大大提高了前端开发效率。

安装

安装gqlgen前需要安装Go语言环境。然后使用以下命令进行安装:

使用

创建一个新的文件夹并进入:

运行以下命令生成GraphQL代码:

该命令将会创建一个名为graphql的文件夹和一个schema.graphql文件。在schema.graphql文件中我们可以定义GraphQL模式。

例如:

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

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

运行以下命令生成代码:

生成的代码可以自动实现GraphQL查询和解析器以及数据库查询等功能。我们可以在查询参数中添加firstafter来限制返回数量和实现分页。

如果您使用go mod,请使用以下命令运行:

查询与解析

在生成的代码中,我们可以看到自动生成的查询和解析器等代码。这些查询和解析器可以理解为一种“翻译器”,将GraphQL查询字符串转换成与数据库交互的Go函数。

例如,我们可以编写以下查询语句:

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

然后可以在Go中实现这个查询:

其中,queryResolveruserResolver是自动生成的类型解析器,开发者只需实现查询和数据加载逻辑即可。

数据加载器

gqlgen还自动生成了数据加载器。它可以帮助我们避免重复查询数据库,提高性能。

例如,在查询用户时我们可以查询他所有的文章,但是我们需要避免查询出所有文章而导致性能下降。因此,我们可以通过数据加载器只查询所需的文章。

例如:

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

生成类型定义

在开发API时,我们需要定义很多类型。在GraphQL中,我们可以定义类型、枚举和输入等,gqlgen可以自动生成类型定义。

例如,我们定义以下类型:

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

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

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

执行以下命令生成类型定义:

在生成的代码中,我们可以看到自动生成的数据类型:

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

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

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

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

总结

通过gqlgen,我们可以自动生成GraphQL查询和解析器,数据加载器和类型定义等代码。这提高了前端开发效率并避免了重复劳动。同时,我们可以专注于实现查询和数据加载等核心业务逻辑。

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

纠错
反馈