【.NET 遇上 GraphQL】使用 Hot Chocolate 构建 GraphQL 服务

cac0d96bfd4193d0b9912e37a72edc9c.png

Hot Chocolate 是 .NET 平台下的一个开源组件库, 您可以使用它创建 GraphQL 服务, 它消除了构建成熟的 GraphQL 服务的复杂性, Hot Chocolate 可以连接任何服务或数据源,并创建一个有凝聚力的服务,为您的消费者提供统一的 API。

在本文中, 我会在 .NET 应用中使用 Hot Chocolate 组件来构建 GraphQL 服务, 让我们开始吧!

01

创建 GraphQL Server


这里我们创建一个空的 .NET Web项目, 并且使用了 .NET 6 的 mini api

dotnet new web -n HotChocolateDemo

然后通过命令或者 Nuget 安装 Hot Chocolate 包

dotnet add ./HotChocolateDemo package HotChocolate.AspNetCore

接下来,需要修改 Program.cs, 注入 GraphQL 服务

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();

运行项目, 并访问 /graphql 端点

2a0769b59b7bcc67295c36dc29a00e53.png

项目会显示上面的页面, 这是 ChilliCream 平台提供的 GraphQL IDE, Banana Cake Pop, 可以使用它浏览,请求 GraphQL 服务, 有点像 swagger 和 Postman 的结合体。

现在它是空的, 因为我们没有创建任何的 GraphQL API, 接下来,我会创建最简单的查询服务, 然后使用 Banana Cake Pop 查询我们的 GraphQL 服务。


02

 创建 GraphQL Schema

首先, 在项目中添加下面的实体类

/// <summary>/// 书籍/// </summary>public class Book{ /// <summary>/// 编号/// </summary>public int Id { get; set; }/// <summary>/// 标题/// </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; }}

接下来,为实体创建查询服务

public class Query{/// <summary>/// 获取指定的书籍/// </summary>/// <param name="id">书籍编号</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

执行 GraphQL 查询

准备工作完成,我们再次运行项目,并访问 /graphql 端点,Ctrl + Alt + T 新建 tab, 然后选择 Schema Reference,可以查看到 Query API, 如您所见, 也可以看到每个api 的描述信息, 前提是在 .NET 项目中选择输出 xml 文档。

8e08a13137f24b55a65d965b9ae2a264.png

然后可以输入下面的查询语句,进行查询

query{book(id:123456){idtitle}
}

后端服务会返回下面的内容, 这是一个最简单的查询

8ade45cfaffcb20c3191dcbaecaf0cff.png

使用 Hot Chocolate 搭建一个 GraphQL 服务, 就是这么简单!当然接下来我会继续介绍更新,订阅,以及和 EF Core 结合使用的操作。

e7c097019d2477922071480781df2874.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP命令注入***

PHP命令注入***漏洞是PHP应用程序中常见的脚本漏洞之一&#xff0c;国内著名的Web应用程序Discuz!、DedeCMS等都曾经存在过该类型漏洞。本文描述了常见的PHP命令注入***漏洞存在形式和利用方法&#xff0c;结合漏洞实例进行分析和漏洞利用&#xff0c;并针对如何防范PHP命令注入…

电脑用户名_仁霸下料优化软件如何找回密码、更换绑定电脑?

今天有客户来找我们管件管家&#xff0c;说注册密码忘记了&#xff0c;登陆不上软件问怎么找回&#xff1b;还有个用户因为换了电脑&#xff0c;需要将账号移到新电脑上。此前我们以玻璃软件为例说了如何下载以及在哪里找到下载文件的位置&#xff0c;这期还是以玻璃软件为例讲…

linux之universal usb installer安装ubuntu

Universal-USB-Installer这个工具是用来制作U盘启动盘的&#xff0c;下面以制作Ubuntu版本Linux系统的U盘启动盘为例&#xff0c;方法如下&#xff1a; 1、安装Universal USB Installer软件&#xff0c;打开后&#xff0c;点击“Browse”按钮浏览下载到本地磁盘的Ubuntu系统ISO…

Android系统的体系结构、开发语言及源码结构

整理自android系统体系结构 Android 是google公司针对手机开发的一个平台&#xff0c;并公布了其中大部分代码&#xff0c;其大部分应用程序都是用JAVA开发的&#xff0c;毕竟它是商业性的产品嘛&#xff0c;有所保留也是理所 当然的。对于搞嵌入式linux开发的人来说我们可以从…

Blazor系列终结!

终于完结Blazor系列转载终结啦&#xff0c;其实站长在25号时就已完成转载&#xff0c;并同步在Dotnet9网站&#xff08;https://dotnet9.com&#xff09;发布&#xff0c;并创建了一个专辑《大家一起学Blazor》&#xff0c;大家可随时在网站浏览。Dotnet9网站同步转载感受 ASP.…

Mysql安装及自动化部署脚本方案

一.简介 数据库&#xff08;Database&#xff09;是按照数据结构来组织、存储和管理数据的仓库&#xff0c; 每个数据库都有一个或多个不同的API用于创建&#xff0c;访问&#xff0c;管理&#xff0c;搜索和复制所保存的数据。 我们也可以将数据存储在文件中&#xff0c;但是在…

男人对待恋爱的不同阶段......

1 小猫咪为何那样恨我&#xff08;via.豆瓣哈组&#xff0c;侵删&#xff09;▼2 驾驶位上方的扶手有什么用&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 回村听到最劲爆的消息&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 男人对待恋…

2个网页跳来跳去_好人网页同步器,使用教程

好人网页同步器&#xff0c;点我下载软件作用&#xff1a;操作N个浏览器&#xff0c;且动作同步操作。软件操作流程&#xff1a;1、打开软件&#xff0c;点击注册账号&#xff0c;系统就算1小时测试时间给你。然后用你的账号登录到好人网页同步器。2、进入主界面后&#xff0c;…

Wpf控件ListBox使用实例2

2.Xaml绑定选择结果 <StackPanel Orientation"Vertical"><TextBlock Margin"10,10,10,10" FontWeight"Bold"> Pick a color from below list</TextBlock><ListBox Name"mcListBox" Height"100" Width…

FBI承认特斯拉是外星人?公开354页文件,揭秘特斯拉研究UFO,制造“死光武器”.........

全世界只有3.14 % 的人关注了爆炸吧知识作业太少吃得太饱特斯拉是外星人吗&#xff1f;偶然点开这个问题&#xff0c;让超模君震惊得心律不齐。作为人类有史以来最伟大的科学家之一&#xff0c;特斯拉一度被称为“最接近神的人”。但估计特斯拉本人也没有想到&#xff0c;在他长…

操作主机 RID matser

一个以活动目录为核心的基础架构管理环境运行效率的高低取决于操作主机和DC的位置的设计&#xff0c;在后期域环境的维护工作中也起着非常重要的作用。今天跟大家介绍在 Active Directory 中&#xff0c;RID Master &#xff08;RID主机&#xff09;的相关设定和所负责的功能。…

pads中如何设置等长_期货如何设置止损止盈避免交易中被套-期货学习

导读:在期货交易中&#xff0c;有一个非常重要的问题&#xff0c;止损止盈&#xff0c;对于一般投资者来讲&#xff0c;止盈比止损要简单一些&#xff0c;毕竟止盈是在获取利润后的操作&#xff1b;可止损呢&#xff01;止损可不是那...在期货交易中&#xff0c;有一个非常重要…

数学图形(2.18)Hyperbolical conical spiral双曲圆锥螺线

双曲圆锥螺线 #http://www.mathcurve.com/courbes3d/spiralehyperbolique/spiralehyperbolique.shtmlvertices 12000t from (-20*PI) to (20*PI)r 10 a rand2(PI*0.2, PI*0.8)x r*cos(t)/t z r*sin(t)/t y r*cot(a)/t 看其脚本代码与截图,当t为无穷大时,上下两端的曲线才…

读书笔记-互联网思维必读10本书之一《免费》

分享一个读书笔记&#xff0c;具备互联网思维必读10本书之一《免费》&#xff0c;作者克里斯.安德森5年前就能通过“免费”串起众多互联网模式&#xff0c;有些至今还很受用&#xff0c;说明前瞻性思维太重要了

单身的原因终于找到了!原来是这几个......

1 单身的原因&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 哈利波特&#xff1a;没说过&#xff0c;不是我&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 我与朋友的健身日记&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 娘亲给我的床…

概率与统计知识复习

一. 随机变量 1.1 概率分布 概率分布 定义 : 随机变量X取各个值$x_i$的概率称为X的概率分布. 对于离散型随机变量: $ P(Xx_i)p_i, (i1,2,3,...) $ 特性 : a. $p_i>0$ b. $\sum_i^{\infty} p_i 1 $ 累积概率分布(CDF) 定义 : $F(x)P(X \le x) $, 对于离散型随机变量 $F(x)\s…

mathwin.top 联系我们_设计:“有目的”的“因果联系”

什么是设计&#xff0c;康石石估计这是很多同学的疑问&#xff0c;甚至这个疑问会一直拖到从业以后的N多年。 似乎到现在&#xff0c;设计都仍没有一个明确的定义&#xff0c;当然康石石并没有野心试图为设计定义&#xff0c;谨希望通过此篇文章&#xff0c;帮助同学们更加深入…

吴继业:LinkedIn商业分析部如何运用大数据实现商业价值

为什么80%的码农都做不了架构师&#xff1f;>>> 吴继业&#xff1a;LinkedIn商业分析部如何运用大数据实现商业价值 LinkedIn的三大商业解决方案为公司带来了丰厚的利润&#xff0c;这三大解决方案包括人才解决方案、市场解决方案和高级订阅服务。对其内容详细…

2022年终结版WPF项目实战合集发布

前言在年中, 组织了一个WPF公益视频教程, 在半天内凑集了2W的费用由此启动了该视频录制计划, 到目前为止, 视频教程已经结束。在这里非常感谢参与本次教程以及长期支持的同学, 下面将主要讲解关于本次视频公开的计划以及后期的计划。视频公开计划本次视频合集共58集, 包含了WPF…