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 端点

项目会显示上面的页面, 这是 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 文档。

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

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

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

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

【.NET 遇上 GraphQL】使用 Hot Chocolate 构建 GraphQL 服务相关推荐

  1. soap协议_当SOAP遇上REST!一文解读Web服务Web API方法

    当SOAP遇上REST!一文解读eb服务和Web API方法 SOAP和REST,也许您已经很熟悉它们,希望扩展您的知识或获取新的观点.或者,也许您听说过它们,并正在寻求更好的理解.毕竟,SOAP和R ...

  2. 当心理学遇上设计:格式塔原理是如何服务于设计的?

    以下内容由摹客团队翻译整理,仅供学习交流,摹客iDoc是支持智能标注和切图的产品协作设计神器. 我始终坚信,心理学和设计的完美结合可以创造出非常好的用户体验.作为设计师,我们的职业目的就是解决用户需求 ...

  3. 区块链/以太坊/DEX-在以太坊上构建 GraphQL API

    摘要 在做dex项目中,没有指导,只能自己摸索,本片文章的转载自https://learnblockchain.cn/article/2566 在操作过程中,遇到的最大难题应该是环境问题,会有各种依赖 ...

  4. 推荐系统遇上深度学习,9篇阿里推荐论文汇总!

    作者 | 石晓文 转载自小小挖掘机(ID: wAIsjwj) 业界常用的推荐系统主要分为两个阶段,召回阶段和精排阶段,当然有时候在最后还会接一些打散或者探索的规则,这点咱们就不考虑了. 前面九篇文章中 ...

  5. 当深度学习遇上量化交易——图与知识图谱篇

    ©PaperWeekly 原创 · 作者|桑运鑫 学校|上海交通大学硕士生 研究方向|图神经网络在金融领域的应用 本文主要回顾三篇将图和知识图谱应用到量化交易上的文章. NeurIPS 2019 论文 ...

  6. [当人工智能遇上安全] 7.基于机器学习的安全数据集总结

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  7. [当人工智能遇上安全] 1.人工智能真的安全吗?浙大团队外滩大会分享AI对抗样本技术

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  8. 【ArcGIS遇上Python】从入门到精通系列之第一章:ArcGIS Python简介

    文章目录 1. Python简介 2. Python的特点 3. ArcGIS的脚本语言 4. ArcGIS中的Python脚本编辑器 1. Python简介 Python是一种跨平台的计算机程序设计 ...

  9. 最小的linux服务器_学习以最小的努力构建GraphQL服务器

    最小的linux服务器 Today in web development, we will be learning how to: 在Web开发的今天,我们将学习如何: Easily setup a ...

最新文章

  1. 中文语境下的手机号识别
  2. python2和pytho3切换_python2和pytho3切换_Python2和Python3共存安装
  3. 三十一、深入Python中的正则表达式
  4. write up web:网站被黑
  5. 学会它,可以替你写100行 200行 300行……的代码
  6. apmserv 5.2.6 升级php,APMServ5.2.6 升级PHP版本 到高版本 5.3,5.4
  7. 丁腈橡胶自然老化时间_东莞元耀:解析抗UV老化试验箱正确的操作流程步骤
  8. Lightroom Classic 教程,如何在 Lightroom 中使用调整画笔?
  9. 带图破解无源晶振与有源晶振知识
  10. NOD32升级ID,免费ID升级网址
  11. 计算机怎么打字快,电脑新手如何快速打字?
  12. 个体工商户营业执照在网上如何年检?
  13. 手机号正则判断最新版 包含199、198、166开头的号码
  14. 计算机英语选词填空题,新视野大学英语读写教程第一册课后习题选词填空和完型翻译...
  15. Python --- ctypes库的使用
  16. 【Android实战】保存QQ账号与密码
  17. win10 装黑苹果 完整教程
  18. 使用sqlyog导入数据表到MySql中
  19. vim 删除所有空行
  20. 最简单的磁盘分区教程

热门文章

  1. iOS c语言 基本运算符
  2. log4j简介及应用
  3. django model filter 条件过滤,及多表连接查询、反向查询,某字段的distinct
  4. 多种方法解决Exchange 2010 EMC批量启用邮箱之后出..
  5. ubuntu 配置mycat
  6. Linux环境下压缩与解压命令大全
  7. 关于c# .net爬虫
  8. IBM X System ServerGuide 8.41 服务器 系统安装 引导盘
  9. Java原来如此-随机数
  10. 微软将终止免费的条码标签服务