GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。
——出自 https://graphql.cn
using HotChocolate;
using HotChocolate.Execution;
using HotChocolate.Types;
using System;
namespace GraphQLBase001
{
class Program
{
static void Main(string[] args)
{
var schemaString = @"
type Query {
hello: String
}";
Console.WriteLine("Schema-First");
SchemaFirst.Run(schemaString);
Console.WriteLine("Schema-First");
CodeFirst.Run(schemaString);
Console.WriteLine("PurCode-First");
PureCodeFirst.Run();
C.Run(schemaString);
D.Run(schemaString);
E.Run();
}
}
public class SchemaFirst
{
public static void Run(string schemaString)
{
var schema = SchemaBuilder
.New()
.AddDocumentFromString(schemaString)
.AddResolver("Query", "hello", () => "world")
.Create();
var executor = schema.MakeExecutable();
Console.WriteLine(executor.Execute("{ hello }").ToJson());
}
}
public class CodeFirst
{
public static void Run(string schemaString)
{
var schema = SchemaBuilder
.New()
.AddDocumentFromString(schemaString)
.BindComplexType<Query>()
.Create();
var executor = schema.MakeExecutable();
Console.WriteLine(executor.Execute("{ hello }").ToJson());
}
public class Query
{
/// <summary>
/// 目测这里只对Hello或GetHello免疫
/// </summary>
/// <returns></returns>
public string Hello() => "world";
}
}
public class PureCodeFirst
{
public static void Run()
{
var schema = SchemaBuilder
.New()
.AddQueryType<Query>()
.Create();
var executor = schema.MakeExecutable();
Console.WriteLine(executor.Execute("{ hello }").ToJson());
}
public class Query
{
/// <summary>
/// 目测这里只对Hello或GetHello免疫
/// </summary>
/// <returns></returns>
public string Hello() => "world";
}
}
}