GraphQL 是一种用于构建 API 的查询语言,它是一种客户端驱动的数据查询语言,能够减少网络传输量,提高数据查询效率。在前端开发中,GraphQL 可以为前端工程师提供更友好、更高效的数据交互方式。
在 .NET 环境中,我们可以使用 GraphQL.NET 来集成 GraphQL,本文就来介绍一下如何在 .NET 中使用 GraphQL。
环境搭建
在开始使用 GraphQL 前,我们需要先搭建一个 .NET 环境。如果您已经拥有 .NET 开发环境,可以跳过此步骤。如果没有,请先下载和安装 .NET SDK。
接下来,我们需要创建一个 .NET 项目,这里我们以 ASP.NET Core 作为示例,打开你的终端或命令提示符,输入以下命令来创建一个空的 ASP.NET Core 项目。
dotnet new webapi -n GraphQLDemo
其中, -n
参数用来指定项目的名称。接下来进入项目目录,并安装 GraphQL 相关的依赖。
cd GraphQLDemo dotnet add package GraphQL dotnet add package GraphQL.Server.Transports.AspNetCore
此时,我们就已经完成了环境搭建的工作。下面来实现一个简单的 GraphQL 接口。
编写 GraphQL 接口
首先,我们需要在项目中创建一个 GraphQL 服务,可以通过以下代码来实现。
-- -------------------- ---- ------- ------ ----- -------------- - ------- -------- ----------------- ------------------ ------- -------- ------- -------- ------ -------------------------------- ----------------- ------- ------- - ----------------- - ----------------- ------- - ------- - ------ ----- --------------------- ------------------- ------ - --- ---------------- - --- ---------------- - ------ - -------- ----- - ----- -- ------ ----- ------------------------------------------------- - -
以上代码中,我们通过 IDocumentExecuter
和 ISchema
接口来定义了一个 GraphQL 服务。其中,IDocumentExecuter
用于执行 GraphQL 查询,而 ISchema
则用于定义 GraphQL 类型系统。
接下来,我们需要为这个 GraphQL 服务提供一个接口。可以在项目中创建一个控制器类,并添加 [Route]
和 [HttpPost]
属性来指定接口的路由和请求方式。这里我们使用 [Route("api/graphql")]
来定义 GraphQL 接口的路由,使用 [HttpPost]
来定义请求方式。
-- -------------------- ---- ------- ---------------------- ---------- ------ ----- ------------------- --------------- ------------ ------ - --- ------ - ----- ------------------------------------------ -- --------------------- - -- - ------ -------------- - ------- - -------- -------- ------ - ------------- --- - ------ ----------- -
对于请求体的内容,我们可以自定义一个类来表示 GraphQL 查询语句。例如,我们在项目中可以定义一个 GraphQLQuery
类,用于表示请求体的内容。
public class GraphQLQuery { public string Query { get; set; } }
上述代码中,我们定义了一个 GraphQLQuery
类,其中有一个 Query
属性,用于表示 GraphQL 的查询语句。
到这里,我们就完成了 GraphQL 接口的编写工作。接下来可以测试一下我们的 GraphQL 接口是否能够正常工作。
测试 GraphQL 接口
在测试 GraphQL 接口前,我们需要为接口添加一个测试数据源。在以下示例中,我们创建了一个 Books
类,用于存储书籍的数据。并在 Queries.cs
中创建了一个 BooksQuery
,用于查询所有书籍的数据。
-- -------------------- ---- ------- ------ ----- ---- - ------ --- -- - ---- ---- - ------ ------ ----- - ---- ---- - ------ ------ ----------- - ---- ---- - - ------ ----- ----- - ------- -------- ---------- ------ - --- ---------- - --- ---- - -- - -- ----- - -------- ----------- - ----- -- ------- -- --- ---- - -- - -- ----- - -------- ----------- - ----- -- ------- - -- ------ ---------- ------------- - ------ ------- - -
在 Schema.cs
中,我们为 Query
类添加了相应的类型定义。
-- -------------------- ---- ------- ------ ----- ------ - ------- - ------- -------- ----- ------ - --- -------- ------ ------- ------------- -- ----- ------ ------ ----------- -- ----- ------ ----------- ----- -- ------- ------ -------------- -------- -- ----- ------ ---------------- ------------ -- ----- -
接下来,我们可以使用类似下面的 GraphQL 查询语句来查询所有的书籍。
{ books { id title description } }
如果一切正常,服务器应该会返回类似下面的数据。
-- -------------------- ---- ------- - ------- - -------- - - ----- -- -------- -------- -------------- ----- -- ------- -- - ----- -- -------- -------- -------------- ----- -- ------- - - - -
总结
到这里,我们已经学习了如何在 .NET 中使用 GraphQL,包括环境搭建、GraphQL 接口的编写和测试。希望这篇文章可以帮助到刚刚接触 GraphQL 的读者,同时提高大家对 GraphQL 的理解和认知。
完整的项目代码,可以在 GitHub 上查看。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6473fce3968c7c53b016fd73