Access denied, Please sign in and make sure you have proper permission.
看好 GraphQL,看好未来会出现一个完全面向 GraphQL 的 Web 框架替代现在的 Web MVC 模式,用 Ruby 的几个大厂也都是 GraphQL 的重度支持者,但是距离下放给一般团队使用感觉还很早期
不知能否简单说说 GraphQL 解决的问题?或者 real-world examples?
我看文档,感觉是抽象了一套对象/数据模型,能让前端直接查.
以往 REST API 则是直接开到 field 层面,不够灵活,要修改很麻烦。
真实世界的例子除去 Facebook 可以直接看 Shopify,他们的博客里有讲已经全面切换到 GraphQL 的,开发者文档里有。另外就是 Github。
GQL 我的理解是他是描述数据和数据之间关系的查询语言,最基本的用法他就是个更好的 Web API(多条查询打包、强类型、文档生成友好)。
但还是缺乏实践,比如 Relay 规范还不稳定(Apollo 规范倒是还行),做不好限制就容易产生性能灾难的查询,或者作为 DDOS 的入口。
也缺乏工具,GQL 有很多新的思想,比如他是会把 GQL Query 编译成 AST,然后去 Resolve,这里为了做到更多的优化,需要了解一些编译原理、需要了解一些数据库的设计方式(GQL 有复杂度评估)、有多路复用,需要考虑并行编程模型(Go 这种语言天生优势,但是 Ruby 就不是了),这些大公司有牛逼的 Infra 团队去处理,但是中小团队没有好用的 开箱即用 工具就很难做好。
还有,由于 GQL Query 有 Parse 过程,在任何语言下,这里都引入了额外的性能损耗(计算密集)
其实主要是思维方式的改变
不是说用了 restful 框架写出来的 API 接口就是 restful 接口,restful 带来最大的认知是如何抽象资源。能摆脱 View 驱动是 json-api 和 GraphQL 的进化方向。如果没有这个认识,即使用 GraphQL 也可以写出狗屎一样的接口,并且自己完全意识不到那是狗屎。