GraphQL相关
来源:互联网 发布:java web mvc四层架构 编辑:程序博客网 时间:2024/05/29 06:27
GQL是什么
graphQL是由Facebook开发的一种查询语言,用于替换REST Api。可以类比SQL也是一种查询语言。
GQL的好处
- 在客户端需求发生变更的时候,可以不需要通知服务端。理论上服务端可知的字段是大而全的,客户端只需要按照自己的需要去请求对应的字段。
- 多个客户端的请求可以合并为一个,减少网络请求次数
Overview翻译
http://facebook.github.io/graphql/
GraphQL是一个设计在客户端上的查询语言,他可以提供直观的、灵活的语法和系统来描述数据需求和交互。
例如,这个GraphQL请求可以返回id=4的用户的名称。
{ user(id:4){ name}
返回的JSON结果
{ "user":{ "name":"Mark Zuckerberg" }}
GraphQL不是一种通用的编程语言,而是用来查询其他已有能力服务的语言。GraphQL不要求特定的编程语言或存储系统来实现它,相反的是,应用服务器将他们的能力映射到一个由GraphQL定义的标准语言、类型系统中。这为产品研发提供了一套统一友好的接口和强大的构建工具。
GraphQL有一系列的设置准则:
分层
如今大多数产品开发都涉及到创建和管理视图的分层。为了与这些应用架构相适配,GraphQL本身就是结构并分层的。这个查询query的结构和返回的数据结构相同。这是查询端自然的表述他数据需求的方式。
产品为中心
GraphQL是由前端需求和编写前端代码工程师驱动的。GraphQL从他们的视角触发,然后构建语言并在运行时按照需要启用。
强类型
每一个GraphQL服务端定义了应用特有的类型系统。所有的查询都在这个类型系统下执行。每当有一个查询,工具都会保证这个查询是预发正确并且通过类型系统的验证,也就是说在开发阶段,服务器就可以保证返回的模型和类型。
客户端指定类型
通过GraphQL的类型系统,服务端可以发布那些客户端允许消费的能力。最终由客户端去负责如何去使用那些已发布的能力。这些请求是在场景维度去定义的。在大多数没有使用GraphQL的 client-server应用中,都是由服务端去决定不同场景返回数据的。在另一方面,GraphQL返回了严格的客户端所要求的数据。
内省的
GraphQL是内省的。一个GraphQL的类型系统必须是可以被GraphQL所查询并详细描述的。GraphQL 的内省提供了一个强大的平台用于构建常用工具和客户端软件库。
因为这些原则,GraphQL对于构架客户端应用是强大且高效的。产品开发者和设计者在创作应用的过程中,通过GraphQL服务器和高质量的工具,可以在不阅读广泛的文档并通过很少的正式训练就达到很高的生产效率。为了提供这种体验,必须能够构建这些服务器和工具。
下面的正式规范可以作为构建工具的参考。它描述了查询的语言,语法,类型系统和内省结构,同时还有为他们提供服务的执行和校验引擎的算法。这些详细描述的目标是为GraphQL生态系统提供基础和框架,包括已经实现了的跨平台跨组织的GraphQL工具、库和服务端。我们期望和社区一起做到这一点。
参考链接
http://facebook.github.io/graphql/
- GraphQL相关
- graphql学习(三)一些和GraphQL相关的
- facebook GraphQL
- GraphQL入门
- GraphQL分享
- GraphQL简介
- GraphQL简介(译)
- Graphql入门_0
- Graphql入门_1
- 准备研究GraphQL
- 学习GraphQL — 简介
- GraphQL第一个例子
- 深入理解 GraphQL
- graphql----java使用
- graphql----javascript使用
- 《GraphQL 名词 101:解析 GraphQL 的查询语法》【译】
- graphql学习(一)graphql-java文档初步阅读
- graphql学习(四)GraphQL和SpringMVC 的整合
- VS(SQL Server一样)设置护眼背景色
- linux系统中如何进入退出vim编辑器,方法及区别
- spring activeMQ 整合(四): JMS 事务管理
- CommandBuffer.Blit BuiltinRenderTextureType.CameraTarget为空的问题
- Integer比较是否相等问题
- GraphQL相关
- java基础5
- cocos2d-x读取cocosStudio控件(C++)
- unicode编码
- sizeof详解
- java对properties集合的使用
- 【数据结构 总论】---概述
- Golang interface{} 作为函数参数和函数返回值例子
- 史上最全的PDF编辑工具(编辑,转换,合并),持续更新!