Graphql 是不是比 Rest API 提供任何性能提升?
Posted
技术标签:
【中文标题】Graphql 是不是比 Rest API 提供任何性能提升?【英文标题】:Does Graphql offer any performance increase over Rest API?Graphql 是否比 Rest API 提供任何性能提升? 【发布时间】:2019-12-05 12:50:55 【问题描述】:在了解了 Graphql 之后,我了解到它比 Rest API 有很多优点,其中最常提到的就是方便。
但是 Graphql 与 Rest API 相比实际上是否提供了任何性能提升?
【问题讨论】:
【参考方案1】:这是一个非常笼统的问题,因此一般的答案 - 视情况而定。
这取决于您的用例,如果您有嵌套对象需要在像@RAVI_SINGH 这样的“标准”REST 架构中进行多次调用,那么答案是肯定的,graphql 可以减少调用次数,从而提高性能。但这真的取决于您的用例。
另一方面,如果您没有这样的情况,并且不需要 graphql 提供的“客户端电源”功能,那么在进行所有选择集计算时,您确实需要付出一些性能上的代价.
就像几乎所有东西一样,graphql 有好有坏,它可以提高或不提高性能,这取决于你的模型以及你如何实现和使用它
【讨论】:
值得注意的是,REST 端点可以(并且通常)被设计为包含许多使 GraphQL 性能更高的特性(例如,能够在单个端点中包含或“扩展”相关资源)要求)。而且,除了开销之外,还可以设计一个性能极好的 GraphQL 服务器。【参考方案2】:是的,当然。如果你只是用谷歌搜索 GraphQL vs. REST,你会得到很多答案,但我会举一个例子来解释一切。
假设您想从具有单独端点的 REST 服务器获取一些书籍的详细信息及其各自的评论 - 例如,/books
和 /reviews
/reviews
端点。这样一来,您最终会进行 n+1 次调用。
GraphQL:如果您使用 GraphQL 作为中间服务器,您只需编写一个 查询 即可为您完成所有工作。这意味着您的 GraphQL 服务器将理解查询,并且仅在一次查询中,它会首先获取所有图书详细信息,然后获取每本书的评论。
使用 Data Loader,您可以进一步优化 GraphQL 服务器。
请参阅this link 了解更多信息。
【讨论】:
以上是关于Graphql 是不是比 Rest API 提供任何性能提升?的主要内容,如果未能解决你的问题,请参考以下文章
从 .NET Core 应用程序同时提供 REST 和 GraphQL API