小试GraphQL

尹大目
• 阅读 393

之前做的需求,基本都是REST风格,以github提供的api为例,比较二者差异。试用GraphQL,找寻其独到之处


<h3 align="center"> <font color="orange">
REST
</font></h3>

REST

  • 一个URI代表一种资源
  • 通过HTTP动词对资源进行操作


创建一个仓库为例

小试GraphQL

小试GraphQL

GET,

PATCH
DELETE类似



<h3 align="center">
<font color="orange">GraphQL</font>
</h3>

  • GraphQL的endpoint只有一个
  • 所有请求都是POST


可以在 Exploer左边写查询,右边显示结果。

查询当前登录的用户名:

小试GraphQL

查询Go项目当前的star数:

小试GraphQL


GraphQL的endpoint只有一个,即

https://api.github.com/graphql

使用Postman:

小试GraphQL


使用querymutation来区分是查询还是修改

小试GraphQL


<h3 align="center"> <font color="orange">
二者区别
</font></h3>

  • REST一个URI就是一个资源,GraphQL只有一个URI
  • REST返回所有的内容,response体积较大,GraphQL可以只返回需要的数据,返回值体积小

GraphQL是一种语言,有自己的语法和类型系统

小试GraphQL

会有错误提示~

小试GraphQL


GraphQL的优势:

  • 取你所需要的数据,不多也不少

           n+1问题

  • nesting(嵌套查询)

            比如想取一个pr的commits、comment、reviews,用REST需要请求四次,然后还需要对返回值进行组装;而用GraphQL则只需要一次请求,拿到的就是需要的数据

小试GraphQL

资源孤岛 (REST) vs Graph(GraphQL)

graphql-voyager

小试GraphQL

  • 强类型(每一个GraphQL的请求发到服务端之后,服务端都会进行校验,不通过会报错)

Migrating from REST to GraphQL

小试GraphQL


参考:

为什么GraphQL比REST好用?

本文由mdnice多平台发布

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
九鹤 九鹤
4年前
GraphQL
GraphQL一种api文档查询语言基本语法本地运行javagitclonehttps://github.com/apollographql/starwarsservercdstarwarsservernpminstallnpmstart执行上面的命令之后打开下面的地址即可学习http://localhost:8080/grap
Stella981 Stella981
4年前
ASMSupport教程4.7 生成关系运算符
<p在java中,关系运算符是很常用的,分别是&gt;,,&lt;,&gt;,&lt;,!这六种,我们按照惯例看看我们需要生成的代码:</p<divid"scid:9D7513F9C04C4721824A2B34F0212519:dfec0f1ca2ec4ebabc9b91c161fbfa47"class"wlWri
Stella981 Stella981
4年前
API设计风格(RRC、REST、GraphQL、服务端驱动)
API设计风格(RRC、REST、GraphQL、服务端驱动)(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Flovecindywang%2Fp%2F10383756.html)
Wesley13 Wesley13
4年前
4,MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB
MongoDB中的关键字有很多,$lt$gt$lte$gte等等,这么多我们也不方便记,这里我们说说几个比较常见的一.查询中常见的等于大于小于大于等于小于等于等于:在MongoDB中什么字段等于什么值其实就是":"来搞定比如"name":"路飞学城"!(https://oscimg.oschin
Wesley13 Wesley13
4年前
MongoDB 范围查询
查询价格在2009000  $gt 大于   $lt  小于//查询价格2009000范围的数据db.prodgory.find({"price":{$gt:"200",$lt:"9000"}})查询给定范围数据  $in//给定范围查询db.product1.find({"categor
Stella981 Stella981
4年前
Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?
从接触Python时起,我就觉得Python的元组解包(unpacking)挺有意思,非常简洁好用。最显而易见的例子就是多重赋值,即在一条语句中同时给多个变量赋值:&gt;&gt;&gt;x,y1,2&gt;&gt;&gt;print(x,y)结果:12在此例中,赋值操作符“”号的右
林十二 林十二
2年前
vscode GraphQL插件踩坑
TLDRvscode的GraphQL语法插件,目前比较推荐GraphqlFoundation的GraphQL:LanguageFeatureSupport相关配置,见配置文件的语法规则,参考背景之前用的GraphQL插件,只开启了语法高亮.自己写的sche
小万哥 小万哥
1年前
资源描述框架的用途及实际应用解析
RDF(资源描述框架)是一种用于机器理解网络资源的框架,使用XML编写。它通过URI标识资源,用属性描述资源,便于计算机应用程序处理信息。RDF在语义网上促进信息的确切含义和自动处理,使得网络信息可被整合。RDF语句由资源、属性和属性值组成。RDF文档包括&lt;rdf:RDF&gt;根元素和&lt;rdf:Description&gt;元素,后者用about属性标识资源。RDF还支持容器(如&lt;Bag&gt;、&lt;Seq&gt;和&lt;Alt&gt;)来描述集合。RDFS是RDF的扩展,提供描述类和属性的框架,而达布林核心是一组预定义属性,用于描述文档。
小万哥 小万哥
1年前
RSS 解析:全球内容分发的利器及使用技巧
RSS(ReallySimpleSyndication)是一种XML格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS文档结构包括&lt;channel&gt;和&lt;item&gt;元素,允许内容创作者分享标题、链接和描述。通过RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RSS支持不同版本,如RSS0.91和RSS2.0,其中RSS2.0语法简单且广泛使用。RSS提高网站流量,适用于新闻、博客、日历等频繁更新的站点。RSS的历史始于1997年,至今仍无官方标准,但已成为内容共享的重要工具。