之前做的需要,根本都是REST格调,以github提供的api为例,比拟二者差别。试用GraphQL,找寻其独到之处


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

REST

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


以创立一个仓库为例

GET,

PATCH和
DELETE相似



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

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


能够在 Exploer右边写查问,左边显示后果。

查问以后登录的用户名:

查问Go我的项目以后的star数:


GraphQL的endpoint只有一个,即

https://api.github.com/graphql

应用Postman:


应用querymutation来辨别是查问还是批改


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

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

GraphQL是一种语言,有本人的语法和类型零碎

会有谬误提醒~


GraphQL的劣势:

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

           n+1问题

  • nesting(嵌套查问)

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

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

graphql-voyager

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

Migrating from REST to GraphQL


参考:

为什么GraphQL比REST好用?

本文由mdnice多平台公布