前言

你是否已经厌倦了REST风格的API? 让我们来聊一下GraphQL。 GraphQL提供了一种声明式的方式从服务器拉取数据。你可以从GraphQL官网中了解到GraphQL的所有优点。在这一系列博客中,我将展示如何在ASP.NET Core中集成GraphQL, 并使用GraphQL作为你的API查询语言。

使用GraphQL的声明式查询,你可以自定义API返回的属性列表。这与REST API中每个API只返回固定字段不同。

安装GraphQL

为了在C#中使用GraphQL, GraphQL社区中提供了一个开源组件graphql-dotnet。本系列博客中我们都将使用这个组件。

首先我们创建一个空的ASP.NET Core App

dotnet new web --name chatper1

然后我们添加对graphql-dotnet库的引用

dotnet add package GraphQL

创建第一个Query

下面我们来创建一个query类, 我们将它命名为HelloWorldQuerygraphql-dotnet中,查询类都需要继承ObjectGraphType类,所以HelloWorldQuery的代码如下

这里你可能注意到我们使用了一个泛型方法Field,并传递了一个GraphQL的字符串类型StringGraphType来定义了一个hello字段, resolve 参数是一个Func委托,在其中定义了如何返回当前字段的值,这里我们是直接返回了一个字符串hello。

查询类中的返回字段都是定义在查询类的构造函数中的

现在我们一个有了一个查询类,下一步我们需要使用这个查询类构建一个结构(schema)。

Startup.cs文件的Configure方法中,使用以下代码替换原有代码

  • DocumentExecuter 类的ExecuteAsync方法中我们定义Action委托,并通过这个委托设置了一个ExecutionOptions对象。这个对象初始化了我们定义的结构(schema), 并执行了我们定义的查询字符串。

  • doc.Query定义了一个查询字符串

  • 最终查询执行的结果会通过DocumentWriter类实例的Write被转换成一个JSON字符串

下面我们来运行一下这个程序

dotnet run

你将在浏览器中看到以下结果

{  "data": {    "hello": "world"}
}

从以上的例子中,你会发现使用GraphQL并不像想象中那么难。下面我们可以在HelloWorldQuery类的构造函数中再添加一个字段howdy, 并指定这个字段会返回一个字符串universe

Field<StringGraphType>(name: "howdy",    resolve: context => "universe"); 

然后我们继续修改Startup类中的Configure方法, 修改我们之前定义的query

重新启动项目后,结果如下

总结

本篇我们只是接触了GraphQL的一些皮毛,你可能会对GraphQL声明式行为有很多问题,没有关系,后续博客中,我们慢慢解开GraphQL的面纱。下一篇我们将介绍如何创建一个中间件(Middleware)

本篇源代码:https://github.com/lamondlu/GraphQL_Blogs

原文地址: https://www.cnblogs.com/lwqlun/p/9907127.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

ASP.NET Core中使用GraphQL - 第一章 Hello World相关推荐

  1. ASP.NET Core中使用GraphQL - 第二章 中间件

    前文:ASP.NET Core中使用GraphQL - 第一章 Hello World 中间件 如果你熟悉ASP.NET Core的中间件,你可能会注意到之前的博客中我们已经使用了一个中间件, 这个中 ...

  2. ASP.NET Core 中文文档 第一章 入门

    原文:Getting Started 翻译:娄宇(Lyrics) 校对:刘怡(AlexLEWIS) 1.安装 .NET Core 2.创建一个新的 .NET Core 项目: mkdir aspnet ...

  3. ASP.NET Core中使用GraphQL - 第七章 Mutation

    ASP.NET Core中使用GraphQL - 目录 ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间 ...

  4. ASP.NET Core中使用GraphQL - 第三章 依赖注入

    ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 SOL ...

  5. ASP.NET Core中使用GraphQL - 最终章 Data Loader

    ASP.NET Core中使用GraphQL - 目录 ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间 ...

  6. ASP.NET Core 中文文档 第二章 指南(4.4)添加 Model

    原文:Adding a model 作者:Rick Anderson 翻译:娄宇(Lyrics) 校对:许登洋(Seay).孟帅洋(书缘).姚阿勇(Mr.Yao).夏申斌 在这一节里,你将添加一些类来 ...

  7. ASP.NET Core 中文文档 第二章 指南(4.5)使用 SQL Server LocalDB

    原文:Working with SQL Server LocalDB 作者:Rick Anderson 翻译: 魏美娟(初见) 校对: 孟帅洋(书缘).张硕(Apple).许登洋(Seay) Appl ...

  8. ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法

    原文 Examining the Details and Delete methods 作者 Rick Anderson 翻译 谢炀(Kiler) 校对 许登洋(Seay).姚阿勇(Mr.Yao) 打 ...

  9. ASP.NET Core 中文文档 第二章 指南(4.3)添加 View

    原文:Adding a view 作者:Rick Anderson 翻译:魏美娟(初见) 校对:赵亮(悲梦).高嵩(Jack).娄宇(Lyrics).许登洋(Seay).姚阿勇(Dr.Yao) 本节将 ...

最新文章

  1. linux 文件系统检查命令
  2. 查看mysql主从配置的状态及修正 slave不启动问题
  3. 判断触摸的点在那个 View上
  4. 十面阿里,屌丝程序员的逆袭之路
  5. (转)谷歌安卓官方教程中文版
  6. 系统篇: ext4 文件系统
  7. CDR有哪些常用的快捷键
  8. 简易中控紫猫插件版(2)基本思路介绍
  9. 2019_Generative Adversarial Networks for Extreme Learned Image Compression
  10. 城市大脑从起源到终极状态的7个阶段
  11. 预训练模型 PLOME
  12. 剑指 Offer 61-68
  13. iOS-获取当前网页的 url 和 title 和 html
  14. 81章 老子1章到_老子道德经全文翻译(全81章)之一
  15. W3Cschool编程实战答案之JavaScript
  16. 《液晶显示器和液晶电视维修核心教程》——导读
  17. 面试珠玑 C语言中union与struct的区别及sizeof的计算方式
  18. 实现断网收银_美国 TMobile 全国断网;ATamp;T拟裁员4700人;阿里云宣布2020年投入20亿做强生态...
  19. ROS使用教程--关于rosbag
  20. 删除 WIN 10 本地连接的 网络2 网络3...

热门文章

  1. gitlab永久设置密码
  2. MVC 之 Partial View 用法
  3. PHP: 深入了解一致性哈希
  4. c++变量的作用域、生存期和可见性
  5. C# 数据结构--排序[下]
  6. API之子窗口创建 (转)
  7. 59、crontab用法简介
  8. 面向.NET开发人员的Dapr——绑定
  9. WPF实现实现圆形菜单
  10. NET问答: 对 Linq 中的 Union 和 Concat 的用法困惑