之前做的需要,根本都是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:
应用query和mutation来辨别是查问还是批改
<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多平台公布