GraphQL API 与 C#:.NET 开发人员分步指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

GraphQL 和 C# 简介

GraphQL 是一种 API 查询语言,它允许客户端只请求他们真正需要的数据。与响应结构固定的 REST 不同,GraphQL 可以灵活地构建查询并精确获取所需内容。在本教程中,我们将学习如何使用 Hot Chocolate 库在 C# (.NET) 平台上创建一个完整的 GraphQL API。

无论您是初学者还是有经验的开发者,只要想掌握构建 API 的现代方法,本文都会对您有所帮助。我们将涵盖所有步骤:从项目设置到实现查询和变更。文章结束时,您将拥有一个可运行的 GraphQL 服务器,随时可以与任何客户端集成。



项目安装与配置

首先,我们需要创建一个新的 ASP.NET Core 项目。打开终端或命令行并执行以下命令:

dotnet new web -n GraphQLDemocd GraphQLDemo

现在,添加 Hot Chocolate 包——这是在 .NET 中使用 GraphQL 的主要库:

dotnet add package HotChocolate.AspNetCore

安装完成后,打开 Program.cs 文件并配置服务。以下是启动 GraphQL 的最小配置:

using Microsoft.AspNetCore.Builder;using Microsoft.Extensions.DependencyInjection;

var builder = WebApplication.CreateBuilder(args);

// 添加 GraphQL 服务builder.Services .AddGraphQLServer() .AddQueryType<Query>();

var app = builder.Build();

// 连接 GraphQL 中间件app.MapGraphQL();

app.Run();

请注意:我们还没有创建 Query 类。这是我们的根类型,它定义了可用的查询。我们将在下一节中创建它。



定义模式:类型和解析器

创建数据模型

首先,定义一个简单的数据模型。就以一本书为例:

public class Book{    public string Id { get; set; }    public string Title { get; set; }    public string Author { get; set; }    public int Year { get; set; }}

创建 Query 类

现在,创建 Query 类,它将返回数据。在 Hot Chocolate 中,解析器是普通的方法,可以是同步的或异步的:

public class Query{    private static readonly List<Book> Books = new()    {        new Book { Id = "1", Title = "战争与和平", Author = "列夫·托尔斯泰", Year = 1869 },        new Book { Id = "2", Title = "罪与罚", Author = "费奥多尔·陀思妥耶夫斯基", Year = 1866 }    };

public IQueryable<Book> GetBooks() => Books.AsQueryable();

public Book? GetBook(string id) => Books.FirstOrDefault(b => b.Id == id);}

GetBooks 方法返回所有书籍的列表,而 GetBook 根据标识符返回单本书。Hot Chocolate 会自动将这些方法转换为 GraphQL 模式的字段。

类型配置(可选)

有时需要明确指定哪些字段应该可用。为此,可以使用属性或 Fluent API。以下是使用属性的示例:

public class Book{    [GraphQLName("id")]    public string Id { get; set; }

[GraphQLNonNullType] public string Title { get; set; }

public string Author { get; set; } public int Year { get; set; }}

现在,使用命令 dotnet run 启动项目,并在浏览器中导航到 http://localhost:5000/graphql。您将看到内置的 Banana Cake Pop——一个用于测试查询的环境。



实现变更(创建、更新、删除)

GraphQL 中的变更用于修改数据。创建一个 Mutation 类,并添加用于操作书籍的方法。

                

博客

书籍推荐