前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GraphQL 可代替 REST API ?

GraphQL 可代替 REST API ?

作者头像
FoamValue
发布2022-08-22 14:03:15
6060
发布2022-08-22 14:03:15
举报
文章被收录于专栏:FoamValueFoamValue

不知不觉地「歇」了好久。一个习惯的养成只需要21天,但习惯的坚持并没有想象中那么容易。

GraphQL 是一个未接触的东东,有博主认为它可以代替 Rest API。那么真的可以代替吗?


一、Rest API

自从它的出现,我的所有应用都采用了 Rest API 的方式进行开发(除了 webservice )。

Rest API

  • 轻量:基于 HTTP 协议。
  • 面向资源:直接指向一个实体、图片等。
  • 易懂:命名约定俗成 GET、PUT、POST、DELETE 等。
  • 简单:传递数据格式 JSON/XML。

更重要的是,它减轻了程序员的沟通与开发成本。

二、GraphQL 与 Rest API

GraphQL 想从一个「刁钻」角度代替 Rest API 的 API。

概念

GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data.

众所周知,Rest API 是一套标准、规范,并不是一个完整的语言。而 GraphQL 居然是一套语言 ,基于查询的编程语言!

到这里,已经可以得出一个结论:在特定的场景下,GraphQL 可以完美代替 Rest API。

因为:编程语言能做的事情,远超所有人的认知。

三、什么是 GraphQL?

GraphQL是Facebook于2012年创造的一种用于描述CS应用中数据模型的能力和要求的语言。

拥有语言、类型系统、内省、验证、执行、响应六大部分。用一句话概括就是:

GraphQL 客户端使用自定义的查询语言来请求 GraphQL 服务端,GraphQL 服务端通过类型系统、内省对查询语言进行验证,验证通过后执行并响应 GraphQL 客户端。

当然,GraphQL 是基于 BSD 协议进行开发的,也是还在演进中的未完成的新语言。

BSD 协议

BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。 当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件: 1. 如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。 2. 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。 3. 不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

数据图

GraphQL 提出了一个新的概念:数据图

将公司的所有应用程序数据与服务集中在一个地方,这个被称为是数据图。

也就是说,GraphQL 最终想要实现的是:

1、统一的查询 API 入口

2、用户自定义的查询语句

3、统一的查询授权机制

4、最终呈现给用户

四、最后未完?

如果说 GraphQL 是「数据中心」查询 API 的解决方案,那么 GraphQL 自身在查询这件事上都有哪些优势?

如果说 GraphQL 是还在演进未完成的新语言,那么会是一个新的风口吗?

PS. 当时,我是持反对意见来看待 GraphQL 可以替代 Rest API,通过了解、学习 GraphQL,最终觉得 GraphQL 似乎还蛮有意思来着。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Alan 手记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档