We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GraphQL 是 Fackbook 的一个开源项目,它是一种 API 查询语言,它其实是一种语言的规范,跟具体的实现是没有关系的。而且它是一层非常薄的数据抽象层,它既不会负责存储数据,也不会负责渲染数据;简单说就是一层 Proxy(代理),它把后端的数据做一些聚合、校验、判断,再返回给前端。对于前端来说,它是一种结构化的查询语言,类似于 JSON。相比 RESTful API 主要有以下特点:
RESTful API
REST 与 GraphQL 都是服务端所承载的系统对外的服务接口,因此两者肯定是可以共存的,甚至可以共用一套 Authorization 等业务逻辑。
RESTful 的核心理念在于资源 (resource),且讲究一个 RESTful 接口仅操作单一资源;因此在你使用 RESTful 时,会设计出大量的接口。GraphQL 是单一入口,一般配置在 [host]/graphql/,所有的资源都从该入口通过 graphql 的语句获取或修改(当然 GraphQL 亦支持多入口,但显然多入口的数量也远小于 RESTful)。
RESTful 所操作的资源相对是离散的;而 GraphQL 的数据更有整体性。
这个一般像 Relay 和 apollo-client 都替你做好了,如果你想了解它的缓存原理,请移步 GraphQL Caching
相比于 RESTful 为了兼容新老客户端所添加的版本号,在 GraphQL 中,如果你需要服务端提供与以前不一样的行为,只需要修改 root Query 的定义,在上面额外添加你想要的 Node 即可。
不用再因为在缺乏沟通的情况下修改接口,而为系统埋下不稳定的定时炸弹。一切面向前端的接口都有强类型的 Schema 做保证,且完整类型定义因 introspection 完全对前端可见,一旦前端发送的 query 与 Schema 不符,能快速感知到产生了错误。
Relay - Facebook 基于 React 的定制化的GraphQL客户端。
Apollo - Apollo是行业标准的GraphQL实现,提供了将现代应用程序连接到云的数据图层。
2fd/graphdoc graphql-docs graphql-markdown
GraphQL Schema 设计实践
5个用/不用GraphQL的理由
apollographql
GraphQL 为何没有火起来?
The text was updated successfully, but these errors were encountered:
No branches or pull requests
什么是 GraphQL?
GraphQL 是 Fackbook 的一个开源项目,它是一种 API 查询语言,它其实是一种语言的规范,跟具体的实现是没有关系的。而且它是一层非常薄的数据抽象层,它既不会负责存储数据,也不会负责渲染数据;简单说就是一层 Proxy(代理),它把后端的数据做一些聚合、校验、判断,再返回给前端。对于前端来说,它是一种结构化的查询语言,类似于 JSON。相比
RESTful API
主要有以下特点:GraphQL 与 RESTful 有什么区别?
REST 与 GraphQL 都是服务端所承载的系统对外的服务接口,因此两者肯定是可以共存的,甚至可以共用一套 Authorization 等业务逻辑。
RESTful 的核心理念在于资源 (resource),且讲究一个 RESTful 接口仅操作单一资源;因此在你使用 RESTful 时,会设计出大量的接口。GraphQL 是单一入口,一般配置在 [host]/graphql/,所有的资源都从该入口通过 graphql 的语句获取或修改(当然 GraphQL 亦支持多入口,但显然多入口的数量也远小于 RESTful)。
RESTful 所操作的资源相对是离散的;而 GraphQL 的数据更有整体性。
GraphQL 与 RESTful 相比有什么优点?
1. 数据的关联性和结构化更好
2. 更易于前端缓存数据
这个一般像 Relay 和 apollo-client 都替你做好了,如果你想了解它的缓存原理,请移步 GraphQL Caching
3. Versionless API
相比于 RESTful 为了兼容新老客户端所添加的版本号,在 GraphQL 中,如果你需要服务端提供与以前不一样的行为,只需要修改 root Query 的定义,在上面额外添加你想要的 Node 即可。
4. 更健壮的接口
不用再因为在缺乏沟通的情况下修改接口,而为系统埋下不稳定的定时炸弹。一切面向前端的接口都有强类型的 Schema 做保证,且完整类型定义因 introspection 完全对前端可见,一旦前端发送的 query 与 Schema 不符,能快速感知到产生了错误。
5. 令人期待的 subscription
Apollo VS Relay
Relay - Facebook 基于 React 的定制化的GraphQL客户端。
Apollo - Apollo是行业标准的GraphQL实现,提供了将现代应用程序连接到云的数据图层。
Graphql-docs
2fd/graphdoc
graphql-docs
graphql-markdown
Other Resource
GraphQL Schema 设计实践
5个用/不用GraphQL的理由
apollographql
GraphQL 为何没有火起来?
The text was updated successfully, but these errors were encountered: