不知不觉地「歇」了好久。一个习惯的养成只需要21天,但习惯的坚持并没有想象中那么容易。
GraphQL 是一个未接触的东东,有博主认为它可以代替 Rest API。那么真的可以代替吗?
一、Rest API
自从它的出现,我的所有应用都采用了 Rest API 的方式进行开发(除了 webservice )。
Rest API
更重要的是,它减轻了程序员的沟通与开发成本。
二、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 似乎还蛮有意思来着。