GraphQL总结

Posted PatWu16

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GraphQL总结相关的知识,希望对你有一定的参考价值。

根据前面的学习,可以发现 GraphQL 带来了很多便利和创新。具有以下几个主要的优势:

  • 1、减少数据冗余和请求冗余,可以更获取和使用数据;
  • 2、灵活而强类型的 schema,GraphQL 是强类型的,他可以帮助开发者避免很多问题;
  • 3、由于强类型的使用,GraphQL 可以自动化地对收到的数据进行检验;
  • 4、GraphQL 不需要进行接口文档维护,它能自动生成,加之其自省功能,可以说很方便;
  • 5、提高开发效率,减少代码变更次数,长期维护成本降低;

尽管 GraphQL 有很多优势,但万物并不是完美的,其也有如下的缺点,正是这些导致其没有被大规模使用:

  • 1、成熟的解决方案比较少,引入 GraphQL 成本略高,风险也不小,这就很大程度上限制了受众;
  • 2、加重前后端应用比重,前端会带一个 graphql-client,延长用户等待时间;
  • 3、GraphQL 产生大量冗余查询,虽然网络层面的请求数被优化了,但GraphQL的每一个实体背后可能对应着不同的数据库甚至不同类型的存储集群,后端集群间的海量数据查询便会成为性能瓶颈。相对于resetful,有明显的降性能的情况;
  • 4、GraphQL 的利好主要是在于前端的开发效率,但落地却需要服务端的全力配合,对于已经成熟的公司技术栈,要推动 GraphQL 还是会遇到各种协作上的阻力;
  • 5、错误提示不友好,REST API的情况下,我们不需要解析Response的内容,只需要看HTTP status code和message,就能知道请求是否成功,大概问题是什么,处理错误的程序也十分容易编写。然而GraphQL只要Service本身还在正常运行,我们就会得到200的HTTP status,需要专门检查response的内容才知道是否有error,这时需要全局中间件处理 http error code 到graph-error的映射;

总结

GraphQL 最大的优势,就是它能够大大提高开发者的效率,而且最大化地简化了前端的数据层的复杂性,使得前后端对数据的组织观点一致。但我们选择一项技术时,需要考察其 scale、performance、tech stack、migration等多方面的因素,否则它可能不仅没能提高效率和性能,反倒制造出更多的问题。

以上是关于GraphQL总结的主要内容,如果未能解决你的问题,请参考以下文章

直接干掉 RESTful:GraphQL 是真的香!

GraphQL 基础教程

一文快速入门 Graphql

分分钟将 REST 转换为 GraphQL

解决 GraphQL 的限流难题

Apollo GraphQL技术栈概览:如何将所有的功能组合起来