GraphQL 与 REST 对比——结论
由于 REST 与 GraphQL 的相似性和功能性,开发人员在使用 GraphQL 时往往会受到 REST 的吸引,反之亦然。通过本文,我希望能够帮助您根据自己的用例和定制需求,找到最适合您应用的解决方案。让我们开始吧!
如果您不了解 GraphQL,我强烈建议您查看以下内容之一:
- @eveporcello在 Linkedin Learning 上提供的精彩速成课程
- YouTube 上的 Net Ninja 的GraphQL 教程
GraphQL 和 REST 之间的相似之处
GraphQL 和 REST 本质上完成相同的任务,即与服务器通信并检索数据。以下是两者之间的一些相似之处:
- GraphQL 和 REST 都基于资源的概念,并且它们为这些资源指定 ID。
- GraphQL 和 REST 都依赖框架和库来处理微小的网络细节。
- 两者都可以区分 API 请求是读取数据还是写入数据。
为什么选择 GraphQL?
1. 一个唯一的端点: GraphQL 公开一个端点,允许您访问多个资源。
2. 一次请求,多个资源:在同一个请求中查询一个或多个资源。这样可以避免为同一个操作多次调用 API。
3. 避免过度获取或获取不足: GraphQL 相对于 REST 的主要优势在于,REST 响应可能包含过多数据,有时也可能包含不足的数据,从而需要发起另一个请求。GraphQL 通过在单个请求中仅获取精确且特定的数据来解决这个问题。
4.扩展 API:添加功能不会影响现有的客户端 GraphQL 查询。
5. 带宽:如果您的 API 打算用于移动应用程序或 Facebook Newsfeed 等大型应用程序,请使用 GraphQL,因为它可以提供更好的带宽使用率。
为什么选择 REST 而不是 GraphQL?
1. 处理复杂查询:我们必须指定所有想要实现的功能。“如果不小心,一些大型查询就可能让你的服务器崩溃。从这个意义上讲,GraphQL 最大的优势也可能是它最大的弱点。”
2. GraphQL 中的代码漏洞:如果攻击者想要对不受保护的服务器进行 DDoS(拒绝服务攻击),他所要做的就是执行昂贵的嵌套查询来使您的服务器过载。
3. HTTP 缓存: REST 允许数据可缓存,这可能会提高性能和可扩展性,而 GraphQL 使用单个端点和自定义请求,因此缓存很复杂。
4. 错误报告:使用 REST,您可以使用 API 响应并构建错误消息监控系统。但 GraphQL 中的错误报告功能有很多不足之处,到处都是“200 K 错误 — 出错了”的错误信息。
5. 数据格式: REST API 支持各种数据格式(XML、JSON、HTML、纯文本等),而 GraphQL 仅支持 JSON。
6. 速率限制: GraphQL 的另一个问题是速率限制。在 REST API 中,你可以简单地指定“我们一天只允许发送多少次请求”,但在 GraphQL 中,很难指定这种类型的语句。
结论:
如果您的 API 计划用于移动应用或 Facebook Newsfeed 等大型应用,请使用 GraphQL,因为它能够更好地利用带宽。或者,对于我们通常需要获取嵌套数据的应用,例如包含评论和人员详细信息的博客文章,请使用 GraphQL。
如果您的 API 需要缓存和监控功能,请使用 REST。或者,我们可以使用公共 API 来决定向客户端公开哪些内容。
您还可以在一个项目中结合使用 GraphQL 和 REST。这完全取决于您的数据和性能要求。
必读:
始终关注并学习案例研究。以下是来自 Netflix 技术博客的案例研究:
- https://netflixtechblog.com/how-netflix-scales-its-api-with-graphql-federation-part-1-ae3557c187e2
- https://netflixtechblog.com/our-learnings-from-adopting-graphql-f099de39ae5f
。
文章来源:https://dev.to/tbaveja/graphql-vs-rest-conclusion-2mfk“一起学习,一起成长!”