【.NET 遇上 GraphQL】使用 Hot Chocolate 构建 GraphQL 服务
Hot Chocolate 是 .NET 平臺(tái)下的一個(gè)開源組件庫(kù), 您可以使用它創(chuàng)建 GraphQL 服務(wù), 它消除了構(gòu)建成熟的 GraphQL 服務(wù)的復(fù)雜性, Hot Chocolate 可以連接任何服務(wù)或數(shù)據(jù)源,并創(chuàng)建一個(gè)有凝聚力的服務(wù),為您的消費(fèi)者提供統(tǒng)一的 API。
在本文中, 我會(huì)在 .NET 應(yīng)用中使用 Hot Chocolate 組件來(lái)構(gòu)建 GraphQL 服務(wù), 讓我們開始吧!
01
創(chuàng)建 GraphQL?Server
這里我們創(chuàng)建一個(gè)空的 .NET Web項(xiàng)目, 并且使用了 .NET 6 的 mini api
dotnet new web -n HotChocolateDemo然后通過(guò)命令或者 Nuget 安裝 Hot Chocolate 包
dotnet add ./HotChocolateDemo package HotChocolate.AspNetCore接下來(lái),需要修改 Program.cs, 注入 GraphQL 服務(wù)
var builder = WebApplication.CreateBuilder(args);var services = builder.Services;services.AddGraphQLServer();var app = builder.Build();app.MapGet("/", () => "Hello World!");app.UseRouting().UseEndpoints(endpoints =>{endpoints.MapGraphQL();});app.Run();運(yùn)行項(xiàng)目, 并訪問(wèn)?/graphql?端點(diǎn)
項(xiàng)目會(huì)顯示上面的頁(yè)面, 這是 ChilliCream 平臺(tái)提供的 GraphQL IDE, Banana Cake Pop, 可以使用它瀏覽,請(qǐng)求 GraphQL 服務(wù), 有點(diǎn)像 swagger 和 Postman 的結(jié)合體。
現(xiàn)在它是空的, 因?yàn)槲覀儧](méi)有創(chuàng)建任何的 GraphQL API, 接下來(lái),我會(huì)創(chuàng)建最簡(jiǎn)單的查詢服務(wù), 然后使用 Banana Cake Pop 查詢我們的 GraphQL 服務(wù)。
02
?創(chuàng)建 GraphQL Schema
首先, 在項(xiàng)目中添加下面的實(shí)體類
/// <summary>/// 書籍/// </summary>public class Book{ /// <summary>/// 編號(hào)/// </summary>public int Id { get; set; }/// <summary>/// 標(biāo)題/// </summary>public string? Title { get; set; } }/// <summary>/// 用戶/// </summary>public class Person{/// <summary>/// 年齡/// </summary>public int Age { get; set; }/// <summary>/// 姓名/// </summary>public string? Name { get; set; }}接下來(lái),為實(shí)體創(chuàng)建查詢服務(wù)
public class Query{/// <summary>/// 獲取指定的書籍/// </summary>/// <param name="id">書籍編號(hào)</param>/// <returns></returns>public Book GetBook(int id){return new Book{Id = id,Title = "C# in depth."}; }/// <summary>/// 獲取指定的用戶/// </summary>/// <param name="name">用戶名</param>/// <returns></returns>public Person GetPerson(string name){return new Person{ Age = 20,Name = name};}}然后修改 Program.cs, 如下
services.AddGraphQLServer().AddQueryType<Query>();?
03
執(zhí)行 GraphQL 查詢
準(zhǔn)備工作完成,我們?cè)俅芜\(yùn)行項(xiàng)目,并訪問(wèn)?/graphql?端點(diǎn),Ctrl + Alt + T?新建 tab, 然后選擇 Schema Reference,可以查看到 Query API, 如您所見(jiàn), 也可以看到每個(gè)api 的描述信息, 前提是在 .NET 項(xiàng)目中選擇輸出 xml 文檔。
然后可以輸入下面的查詢語(yǔ)句,進(jìn)行查詢
query{book(id:123456){idtitle} }后端服務(wù)會(huì)返回下面的內(nèi)容, 這是一個(gè)最簡(jiǎn)單的查詢
使用 Hot Chocolate 搭建一個(gè) GraphQL 服務(wù), 就是這么簡(jiǎn)單!當(dāng)然接下來(lái)我會(huì)繼續(xù)介紹更新,訂閱,以及和 EF Core 結(jié)合使用的操作。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的【.NET 遇上 GraphQL】使用 Hot Chocolate 构建 GraphQL 服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c#winform自定义窗体(含源码)
- 下一篇: Blazor系列终结!