拾光

人生如梦,人生如茶。。。

导航

  • 首页
  • 分类
    • 闲言碎语
    • 聆听
    • 软件分享
    • 亿次元&COS
    • 精品文摘
    • 说一说
    • 相册
  • 听听
  • 朋友圈
  • 留言
  • 友链
  • 相册
  • 登录

使用Hot Chocolate和.NET 6构建GraphQL应用(1)——GraphQL及示例项目介绍

admin 2022年 01月 22 日

阅读选项

系列导航

使用Hot Chocolate和.NET 6构建GraphQL应用文章索引

前言

这篇文章是这个系列的第一篇,我们会简单地讨论一下GraphQL,然后介绍一下这个系列将会使用的示例项目。

关于GraphQL

关于GraphQL和Restful API的讨论已经有很多了,我在本文里不会试图去推销什么技术。GraphQL的官方主页在这里GraphQL | A query language for your API,它的出现是为了解决Restful API面临的当所需查询的数据结构呈现及其复杂的树状结构或依赖关系时,需要多次按顺序发送不同的Restful请求,并且需要额外的Dto对象来保证当前的API接口不会返回多余的数据,此外,当数据之间的关系发生变动导致原本的Resful API无法获取关联的数据时,就需要去修改接口定义。

GraphQL能通过精确定义客户端需要的数据,无需多次请求就可以获取无冗余的结果。关于GraphQL的基本概念就不详细介绍了,可以参考官方文档,或者跟着这个系列亲手实现一个感受一下。

关于GraphQL和Restful API各自的优点和缺点,可以参考这篇文章REST vs GraphQL for an API。用我的理解简单地解释就是:

  • Restful API更为开发人员所熟悉,但是我觉得文章里提到的API Client的接受度和Learning Resources现在来看几乎都不是太大的优势了,越来越多的主流API Client像是Postman,小众一点的Insomia,都支持发送GraphQL请求,社区的资源也很多了。Restful API最明显的短处在于我们必须使用Dto来减少返回数据的冗余。
  • GraphQL的优势在于它能更好地发送聚合请求,并且能够精确定义数据使得返回值无冗余。缺点也很明显,开发人员相对来说不够熟悉,对文件下载的支持不好。

项目模版

这两天抽空整理之前的内容,写了一个基于Clean Architecture的.NET 6 Web API项目模版,放在这里了:Asinta/Code4NothingCaTempate,还没有推到Nuget上,如果有需要使用的,可以clone到本地,在解决方案根目录执行:

$ dotnet new --install .
The following template packages will be installed:
/Users/yu.li1/Projects/asinta/netcore/Code4Nothing Success: /Users/yu.li1/Projects/asinta/netcore/Code4Nothing installed the following templates:
Template Name Short Name Language Tags
------------------------------------------------- ---------- -------- ----
Code4Nothing Clean Architecture Solution Template ca-c4n [C#]

接下来就可以从本地使用这个模版来创建新项目了

dotnet new ca-c4n -n PostGraphi

这个解决方案模版包含了测试项目,我们在这个系列里暂时都不会用到,src目录下的项目还是按照之前使用.NET 6开发TodoList应用文章索引这个系列里的方式进行划分,用做示例的TodoItem相关的可以作为参考实现自己的实体和相关功能。

在GraphQL的这个系列里,我们会基于这个模版来构建一个博客文章管理的示例应用,主要用来练习如何在.NET 6 Web API应用里构建GraphQL接口以及相关的功能。

领域实体关系

下图是我们即将构建的应用涉及的实体以及相互之间的关系,一些基础字段比如创建时间和更新时间我没有画上去,足够理解用了。

关于Hot Chocolate

Hot Chocolate作为GraphQL和.NET生态中近几年迅速获得大量使用的GraphQL服务端框架,提供了非常方便的使用方法。你可以应用它来构建独立的基于.NET 6的GraphQL Server,也可以用来部署在Azure Functions或者AWS Lambda上用来作为GraphQL Server,同时也可以实现GraphQL网关,一些.NET生态中推荐使用的网关框架如Envoy也支持GraphQL请求。

我们会使用这个框架来实现GraphQL的常用功能。

关于GraphQL更多的资源

  • chentsulin/awesome-graphql
  • graphql/graphiql
  • 一个很棒的GraphQL接口可视化工具:APIs-guru/graphql-voyager

使用Hot Chocolate和.NET 6构建GraphQL应用(1)——GraphQL及示例项目介绍的

使用Hot Chocolate和.NET 6构建GraphQL应用(1)——GraphQL及示例项目介绍
作者 admin
发布于 2022-01-22
分类
软件分享

那年今日
01月
22日
  • 2022年01月22日眼睛为他下着雨,心却为他打着伞,这就是恋爱
  • 2022年01月22日一生里途经的人虽多,但有些人是一阵子,有些人是一辈子
  • 2022年01月22日品味女人:女人兴趣女人味
  • 2022年01月22日逝去的器械,最好不见,最好不念
  • 2022年01月22日关于男子:成熟男子绝对不会做的事
k8s-storage-class 第57篇-profile实例

微信分享二维码

赞 (0)
分享
QQ
QQ空间
微信
微博
赞赏
×
生成中,请稍候...
海报

随机文章

伤感文章:也许,我们再也遇不到自己想象中的那小我私人了

每年春天,会去...
2022年01月22日

阅读生涯:人的一生没有比快乐更主要的事情

同伙,你快乐吗...
2022年01月22日

孤人-桃籽

叹孤人心难留谁...
2022年09月03日

最美的太阳_(2013广州演唱会)-张杰

本篇文章暂无摘要~
2019年11月21日

晚放心语:去名誉地受伤,去勇敢地痊愈自己

谢谢那些不...
2022年01月22日

一岁年龄,一岁心

标签:一岁年龄...
2022年01月21日

评论区(暂无评论)

取消回复

我要评论

这里空空如也,快来评论吧~


拾光
如果你错过五点的日出,也许你可以等待六点的夕阳!
99+
文章
99+
评论
7
分类
4
页面
文章分类
  • 闲言碎语 (587)
  • 聆听 (1462)
  • 软件分享 (1061)
  • 亿次元&COS (203)
  • 精品文摘 (4544)
  • 说一说 (119)
  • 相册 (9)
最近文章
  • 回头看,走了很远的路 - 小何
    2026/01/15 · 暂无评论
  • 最想念的人是你 (看枫叶一片片落地) - 大头针 Official
    2026/01/15 · 暂无评论
  • 余香 - 张小九
    2026/01/15 · 暂无评论
  • 敬一杯自己-草原兄弟
    2026/01/15 · 暂无评论
  • 只要有你 - 烟嗓船长
    2026/01/15 · 暂无评论
最新评论
  • admin
    请问是哪个版本?

    评论于:typecho接口API(非插件)
    2026-01-08
  • evhans
    app上面,当我在首页上点击文章,显示加…

    评论于:typecho接口API(非插件)
    2026-01-05
  • 蒙需
    免费版的经常回答到一半就中断了,可以回复…

    评论于:deepseek本地使用收费接口
    2025-12-25
  • 托尔斯泰
    测试

    评论于:typecho接口API(非插件)
    2025-12-09
  • 托尔斯泰
    额

    评论于:typecho接口API(非插件)
    2025-12-09
文章标签
  • 歌曲
  • 一言
  • 原文
  • 分享
  • 照片
  • 二次元
  • typecho
  • 小姐姐
  • 软件
  • 插件
  • wordpress升级
  • 美女
  • wordpress技巧
  • 情感
  • 房子
  • 建筑
  • 别墅
  • WordPress插件
  • Wordpress
  • 视频

赞赏支持作者

×
支付宝
微信
支付宝二维码
微信二维码
友情链接:
拾光
规则之树
幻焕博客
旧时光
ping爱检测


© 2026 拾光
Powered by Typecho & BearSimple
湘ICP备18006110号
× 微信二维码

微信扫码联系我

× QQ二维码

QQ扫码联系我