GraphQL相比REST API是否提供了性能上的优势?

3

在了解了GraphQL之后,我明白它与Rest API相比有许多优点,其中最常提到的一个是方便性。

但是GraphQL是否真的比Rest API具有更好的性能呢?

最初的回答:

GraphQL并不一定比Rest API具有更好的性能。虽然GraphQL可以减少网络请求次数,但是它可能会导致查询过于复杂,从而影响性能。实际上,选择使用GraphQL还是Rest API应该根据具体情况而定,需要考虑数据量、查询复杂度、缓存等因素。

2个回答

2
肯定的。如果你只是在谷歌上搜索GraphQL vs. REST,你会得到很多答案,但我会给你一个例子来解释一切。
假设你想从你的REST服务器获取一些书籍的详细信息和它们各自的评论,这个服务器有单独的端点,例如/books和/reviews。
- REST:如果你直接调用REST服务器,那么首先你必须请求所有书籍的详细信息,然后对于每本书的ID,你将调用/reviews端点来获取它的评论。这样你最终会进行n+1次调用。 - GraphQL:如果你使用GraphQL作为中间服务器,你只需要编写一个查询即可完成所有操作。这意味着你的GraphQL服务器将理解这个查询,并且在一个查询中,它将首先获取所有书籍的详细信息,然后获取每本书的评论。
使用Data Loader可以进一步优化你的GraphQL服务器。
请参考this link了解更多信息。

2
这是一个非常普遍的问题,因此一般的回答是 - 这取决于情况。它取决于您的用例,如果您有需要在“标准”REST架构中进行多次调用的嵌套对象,例如@RAVI_SINGH所述,那么是的,GraphQL可以减少所需的调用次数,从而提高性能。但这确实取决于您的用例。另一方面,如果您没有这样的情况,并且不需要GraphQL提供的“权力下放”功能,则在执行所有选择集计算时会付出一些性能代价。因此,就像几乎所有事情一样,GraphQL有好有坏,它可以改善性能,也可能不行,这取决于您的模型以及如何实现和使用它。"最初的回答"

值得注意的是,REST端点可以(而且通常会)被设计为包含许多使GraphQL更高效的特性(例如,能够在单个请求中包含或“展开”相关资源)。此外,除了开销之外,也有可能设计一个性能糟糕的GraphQL服务器。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接