使用Hot Chocolate创建ASP.NET Core GraphQL服务

GraphQL介绍

GraphQL是一个用于API的查询语言,是一个使用基于类型系统来执行查询的服务端运行时。GraphQL对你的API中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余。.

Hot Chocolate介绍

Hot Chocolate是.NET平台下的开源GraphQL服务器,符合最新的GraphQL 2021草案规范。

Hot Chocolate消除了构建成熟的GraphQL服务器的复杂性,可以让我们轻松实现ASP.NET Core GraphQL服务器。

Demo

下面,我们就来演示如何使用Hot Chocolate创建ASP.NET Core GraphQL服务。

1.引用Nuget包

创建ASP.NET Core Web API项目,安装如下Nuget包:

HotChocolate.AspNetCore

2.创建模型

假设,我们要查询用户相关数据。

新增User.cs文件,代码如下:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

3.创建Query类

新增Query.cs文件,这个类将包含我们需要执行的所有查询,代码如下:

public class Query
{
    public async Task<User> GetUser(int id)
    {
        return new User { Id = id, Name = "Name_"+id, Age = new Random().Next(20,30) };
    }
}

这里我用的假数据,你也可以改成使用数据库。

4.配置GraphQL

我们需要配置应用程序以使用GraphQL。修改Startup.cs中的代码如下:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services
        .AddGraphQLServer()
        .AddQueryType<Query>();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapGraphQL();
        endpoints.MapControllers();
    });
}

5.运行GraphQL

运行应用程序,访问https://启动地址/graphql/,你应该可以打开Hot Chocolate内置的GraphQL IDE(Banana Cake Pop)。

我们可以通过输入GraphQL查询语句,并点击Execute按钮来获取我们想要的数据:

使用Hot Chocolate创建ASP.NET Core GraphQL服务

结论

使用Hot Chocolate,创建GraphQL服务就是如此简单容易。