GraphQL 是一种先进的查询语言,用于API的构建和交互式查询,可以在不牺牲性能的情况下提供强大的开发体验。在.NET Core 中,可以使用 GraphQL 来构建灵活而强大的API。
什么是 GraphQL?
GraphQL 是一个用于API的查询语言和运行时集成的类型系统。它旨在提供一种比RESTful API更高效、强大和灵活的数据传输方式。GraphQL 不仅可以查询数据,还可以修改数据,因此可以用作完整的侵入式 API。
与 RESTful API 不同,GraphQL 可以为客户端返回所需的精确数据,而不必在一个请求中返回大量的无用数据。它还通过强大的类型系统、可重用的查询和简单的错误处理机制来简化了 API 的开发和维护。
在 .NET Core 中使用 GraphQL
在 .NET Core 中使用 GraphQL 非常简单,只需使用 GraphQL for .NET Core 库即可。这个库包含了用于构建 GraphQL API 的所有必要组件。
接下来,我们将介绍如何在 .NET Core 中使用 GraphQL。
步骤 1:安装 GraphQL.NET
使用 Visual Studio,可以通过NuGet 安装 GraphQL for .NET Core 库。在命令行中,可以使用如下命令安装:
dotnet add package GraphQL
步骤 2:定义GraphQL架构
在项目中创建一个GraphQL架构,该架构定义了数据模型、查询类型和可用的查询字段等信息。创建GraphQL架构时,需要以下两个组件:
- 数据模型
GraphQL 使用类型系统来定义数据模型。在编写架构时,需要定义以哪些方式可以查询这些类型。可以使用 C# 类来定义类型。
public class Book { public int Id { get; set; } public string Title { get; set; } public string Author { get; set; } }
- 查询类型
GraphQL 架构还定义了可用的查询类型及其字段。这些文档适用于所有 graphql 操作,包括查询、变更和订阅操作。
-- -------------------- ---- ------- ------ ----- ----- - ------- -------- ---------- ------- ------ ------- - ------ - --- ---------- - --- ---- - -- - -- ------ - ----- --------- ----- - ------ ------ --- --- ------------- ------ -- --- ---- - -- - -- ------ - ------- --------- ----- - ---- ---- -- --- ------ - -- - -------------------------- ------ ----------------- ---------- - ------ ------- - -展开代码
在这个例子中,我们创建了一个查询类型,并定义了一个名为books
的查询属性。这个属性返回了一个包含两个从内存加载的 Books 的集合。
可以使用GraphQLMetadataAttribute
来解决查询名称与C#方法名称不同的问题。
步骤 3:处理 GraphQL 请求
现在我们已经定义了 GraphQL 架构,接下来需要处理 GraphQL 请求。处理 GraphQL 请求需要使用一个中间件,该中间件将负责执行查询并返回结果。
可以使用以下代码在 .NET Core 中定义 GraphQL 中间件:
public static class GraphQLMiddlewareExtensions { public static void UseGraphQL(this IApplicationBuilder app, IWebHostEnvironment env) { var schema = new Schema { Query = new Query() }; app.UseMiddleware<GraphQLMiddleware>(new GraphQLSettings { BuildUserContext = ctx => new GraphQLUserContext { User = ctx.User } }, schema); } }
使用 UseGraphQL 的中间件会将 GraphQL 请求发送到定义的 Query 类型,然后将数据发送回客户端。
步骤 4:测试 GraphQL API
现在,我们已经可以构建和执行 GraphQL 查询了。可以使用任何 GraphQL 客户端来测试 API,如 GraphiQL,Postman 甚至浏览器中的纯 JavaScript。
以下是一个使用 GraphiQL 的示例查询:
{ books { id title author } }
查询结果将类似:
-- -------------------- ---- ------- - ------- - -------- - - ----- -- -------- ------ ------ --- --- ------------- ------- --------- ----- -------- -- - ----- -- -------- ---- ---- -- --- ------- --------- ------- -------- - - - -展开代码
总结
在本文中,我们介绍了 GraphQL 的概念和用法,并演示了在 .NET Core 中使用 GraphQL 构建 API 的步骤。我们还通过一个简单的代码示例介绍了如何定义 GraphQL 架构和查询类型、处理 GraphQL 请求以及测试 GraphQL API。
使用 GraphQL 还可以更好地支持你的客户端代码,无论是使用 JavaScript、TypeScript、React 还是其他客户端技术,都可以轻松地访问 API 提供的数据。
因此,我们相信 GraphQL 是一个非常有用且必要的技术,可以帮助我们更好地开发可伸缩和可重用的 API。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c2201583d39b488163dc81