如何在 .NET 中使用 GraphQL

阅读时长 7 分钟读完

GraphQL 是一种用于构建 API 的查询语言,它是一种客户端驱动的数据查询语言,能够减少网络传输量,提高数据查询效率。在前端开发中,GraphQL 可以为前端工程师提供更友好、更高效的数据交互方式。

在 .NET 环境中,我们可以使用 GraphQL.NET 来集成 GraphQL,本文就来介绍一下如何在 .NET 中使用 GraphQL。

环境搭建

在开始使用 GraphQL 前,我们需要先搭建一个 .NET 环境。如果您已经拥有 .NET 开发环境,可以跳过此步骤。如果没有,请先下载和安装 .NET SDK。

接下来,我们需要创建一个 .NET 项目,这里我们以 ASP.NET Core 作为示例,打开你的终端或命令提示符,输入以下命令来创建一个空的 ASP.NET Core 项目。

其中, -n 参数用来指定项目的名称。接下来进入项目目录,并安装 GraphQL 相关的依赖。

此时,我们就已经完成了环境搭建的工作。下面来实现一个简单的 GraphQL 接口。

编写 GraphQL 接口

首先,我们需要在项目中创建一个 GraphQL 服务,可以通过以下代码来实现。

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

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

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

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

以上代码中,我们通过 IDocumentExecuterISchema 接口来定义了一个 GraphQL 服务。其中,IDocumentExecuter 用于执行 GraphQL 查询,而 ISchema 则用于定义 GraphQL 类型系统。

接下来,我们需要为这个 GraphQL 服务提供一个接口。可以在项目中创建一个控制器类,并添加 [Route][HttpPost] 属性来指定接口的路由和请求方式。这里我们使用 [Route("api/graphql")] 来定义 GraphQL 接口的路由,使用 [HttpPost] 来定义请求方式。

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

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

对于请求体的内容,我们可以自定义一个类来表示 GraphQL 查询语句。例如,我们在项目中可以定义一个 GraphQLQuery 类,用于表示请求体的内容。

上述代码中,我们定义了一个 GraphQLQuery 类,其中有一个 Query 属性,用于表示 GraphQL 的查询语句。

到这里,我们就完成了 GraphQL 接口的编写工作。接下来可以测试一下我们的 GraphQL 接口是否能够正常工作。

测试 GraphQL 接口

在测试 GraphQL 接口前,我们需要为接口添加一个测试数据源。在以下示例中,我们创建了一个 Books 类,用于存储书籍的数据。并在 Queries.cs 中创建了一个 BooksQuery,用于查询所有书籍的数据。

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

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

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

Schema.cs 中,我们为 Query 类添加了相应的类型定义。

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

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

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

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

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

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

接下来,我们可以使用类似下面的 GraphQL 查询语句来查询所有的书籍。

如果一切正常,服务器应该会返回类似下面的数据。

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

总结

到这里,我们已经学习了如何在 .NET 中使用 GraphQL,包括环境搭建、GraphQL 接口的编写和测试。希望这篇文章可以帮助到刚刚接触 GraphQL 的读者,同时提高大家对 GraphQL 的理解和认知。

完整的项目代码,可以在 GitHub 上查看。

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

纠错
反馈