GraphQL 与 REST - 自动售货机示例
这里有《办公室》的粉丝吗?
你还记得吉姆把德怀特的东西放进自动售货机的那一集吗?根据 GraphQL 的创始人之一李·拜伦 (Lee Byron)的说法,这似乎是一个切中要点的例子,体现了GraphQL 与 REST之间的主要区别。
自动售货机案例
在那一集中,吉姆把德怀特的物品放进了自动售货机。其中包括咖啡杯、摇头娃娃、名牌、笔筒……还有德怀特的钱包。为了不让德怀特空手而归,吉姆给了他一袋五分硬币。
为了从自动售货机中取回他的物品,德怀特应该:
- 用镍币取回他的钱包
- 使用四分之一、二分之一来检索第一个对象
- 对他想要取回的每一件物品重复该过程
这就是自动售货机的运作方式。该模式类似于我们使用REST API所了解的模式。想象一下,我们想要使用 REST 从公司博客中检索帖子: 如果要添加作者,则需要从另一个资源中获取(或修改包含帖子的资源),最终您将需要两个服务器请求而不是一个(或额外的工作),并且随着您继续扩展,您可能会对不同的端点发出更多请求,以获取所有需要的数据: 这正是我们的自动售货机,在这里您需要按一个按钮才能获得一件商品。如果您想获得更多商品,您需要逐一获取,对不同的商品重复该过程。
带有特殊按钮的自动售货机
现在想象一下一台带有特殊按钮的自动售货机,可以让你一次购买多件商品。这种超级自动售货机可以帮助德怀特快速取回他的东西,而这正是GraphQL API在数据检索方面所做的。 在 GraphQL 中,我们有一个能够处理复杂请求的单一端点。你向GraphQL 服务器查询特定数据,它会返回你请求的内容,从而减少通过网络传输的比特数。
加速您的 GraphQL API 开发
GraphQL 编辑器是一款支持工具,既适用于高级GraphQL 用户,也适用于 GraphQL API 新手。我们一体化的 GraphQL 开发环境内置了数十项微功能,可帮助您更快地构建、管理和部署GraphQL API 。
文章来源:https://dev.to/graphqleditor/graphql-vs-rest-a-vending-machine-example-1894