DOCS

为什么选择 GraphQL

为什么选择 GraphQL

了解为什么我们建议通过 GraphQL 而非 REST 进行集成。

Zonos 提供两种主要 API 类型用于集成:GraphQL 和 REST。虽然 REST API 的历史更悠久,可能对许多人来说更加熟悉,但我们已经转向 GraphQL,以实现更大的灵活性和更快速的创新。虽然两者仍然都受支持,但本指南解释了为什么 GraphQL 不仅是我们集成的未来,也是一般集成的未来,并且是今天满足您需求的更强大工具。

什么是 GraphQL? 

GraphQL 是一种与 API 通信的替代方式,非常适合复杂的数据结构和在其基础上构建界面。与将数据视为单独的独立部分不同,GraphQL 展示了数据片段如何连接和相互关联,使得询问和接收信息变得容易。

将 GraphQL 视为一种查询语言,允许您与 API 交互,就像直接与数据库交互一样。使用 GraphQL 可以让您尽可能接近数据库,允许您选择所需的数据以及获取方式,提供巨大的性能优势。

GraphQL 由 Facebook 创建,以解决复杂数据结构扩展的问题。由于 Facebook 成功采用了它,越来越多的公司开始认识到使用 GraphQL 来构建 API 的好处。

已经了解 REST?GraphQL 会很熟悉。

GraphQL API 比您想象的更容易使用。如果您习惯于使用 REST API,以下是 REST 的核心概念如何转换为 GraphQL。

特性RESTGraphQL
端点向不同的端点发出请求以执行不同的操作所有请求都发送到单个端点(例如 /graphql)
数据检索在特定端点上使用 GET 方法检索数据使用 查询 来请求所需的确切数据,减少过度获取或获取不足
数据修改/操作使用 POST、PUT、PATCH 或 DELETEHTTP 方法 修改或处理数据使用 mutations 执行操作(例如,创建方、计算落地成本)
响应格式固定的响应格式返回所有预定义字段,无论是否需要灵活的响应允许指定要包含的确切字段,减少不必要的数据传输(如果此灵活性感觉复杂,只需在我们的文档中使用预先编写的查询示例即可获得 RESTful 体验)
数据连接通常需要多个请求来获取相关数据嵌套查询使得在单个请求中检索相关数据成为可能(例如,方的详细信息和发货物品一起)。用户还可以构建工作流以在单个 GraphQL 请求中管理多个 mutations,减少复杂性并提高效率

GraphQL 的优势

GraphQL 通过精确的数据检索、单个端点的使用以及改进的批处理和缓存功能提供更快的响应。

精确的数据检索

REST 的一个常见挑战是数据的过度获取或获取不足——要么获取太多不必要的信息,要么一次性没有足够所需的信息。GraphQL 通过仅允许请求所需的内容来消除这一点——不多不少。这种特定性不仅改进了性能,而且简化了与 API 交互的过程,使系统更高效和用户友好。

此方法有用的示例:

  • 这允许前端开发人员准确获取他们的 UI 组件所需的数据,减少到服务器的往返次数并改进性能。
  • 想象您想获得一个 HS 代码分类、纸箱化、发货评级和检查中项目的落地成本报价。如果您通过 GraphQL API 进行了集成,您可以进行单个调用,使用必要的 工作流 在单个响应中获取您需要的一切(以及您不需要的)。相比之下,通过 REST API,您需要先调用 Classify REST API,然后之后单独调用 Rating REST API,最后将该分类和发货评级插入到您对 Landed Cost REST API 的第三次调用中。所有这些 REST API 都会返回他们能够返回的每一条信息,导致您必须解析响应以获取您需要的数据。这种速度节省在快速返回完整落地成本方面产生了影响,在购物者离开之前。

单个端点

GraphQL API 通常具有单个端点,与通常具有多个端点用于不同资源和操作的 REST API 不同。这使得管理和理解 API 变得更简单。

批处理和缓存

GraphQL 批处理查询的能力及其对缓存策略的支持导致显著的性能改进。这些功能减少了网络和服务器上的负载,转化为更快、更可靠的用户交互。

GraphQL API 基于强类型架构。这个架构定义了可用数据的结构以及可以执行的操作。这提供了关于哪些数据可用以及如何访问它的清晰性,可以提高开发人员的生产力并减少错误。例如,前端团队可以探索图表以获得他们所需的确切内容,而不是等待新的 REST 端点。

在 GraphQL 中添加新功能或修改现有功能不会因为其灵活的查询结构而中断当前的集成。这一功能确保了可以进行改进而不破坏与现有客户端的兼容性。

感谢 GraphQL 的内省功能,文档会自动生成并在每次更改时更新。这确保了提供给开发人员的所有信息都是最新的,减少了与过时文档相关的集成问题和支持工单——这是 REST API 文档通常面临的挑战。

查看我们的 GraphQL 文档 和我们的 REST 文档 以查看区别。

一个类比 

想象您在一家餐厅,菜单让您完全按照喜欢的方式订购菜肴,而另一家餐厅您只能从套餐中选择。GraphQL 就像第一家餐厅:

  • 获得您想要的确切内容: 使用 GraphQL,您可以要求您需要的确切数据,不多不少。想象您只想要菜肴的名称和价格,而不是整个成分列表。使用 REST API,您必须获得整个菜肴详细信息并忽略不需要的部分。
  • 组合自定义菜肴: 我们的 GraphQL API 可以轻松组合以创建更自定义的解决方案,类似于自助餐风格的餐厅,您可以创建完全按照您的需要的独一无二的菜肴,使用他们已有的食材。相比之下,REST API 就像一家有预制商品的面包店装在篮子里——您只能订购已经创建的内容,您不能选择只带回您想要的片段。
  • 等待更少: 由于您可以在单个请求中获得您需要的所有信息,就像要求您的服务员一次性带来您的开胃菜、主菜和甜点,而不是在课程之间等待。大多数 REST API 需要您发送多个请求以获取不同的信息片段。
  • 轻松更改订单: 如果您应用的数据需求发生变化,GraphQL 使其更容易调整。您只需更改您需要的查询。使用 REST,您可能需要等待厨房(后端)为菜单创建新的餐点(端点),这需要更多时间。

GraphQL 为获取数据提供了比 REST API 更灵活、更高效和更简单的方式,尤其是当您的需求变化或增长时。

Zonos 如何使用 GraphQL 

在过去几年现代化我们的平台时,Zonos 选择了使用 GraphQL 而非 REST 为我们的 API 构建新功能。我们决定这样做是因为我们的数据很复杂且相互关联,就像导致 Facebook 创建 GraphQL 的数据一样。这种复杂性使得构建可扩展的 REST API 变得困难,因为开发人员需要获取和使用数据的方式在实现之间差异很大,而 REST 并不灵活。

GraphQL 通过允许实现我们 API 的开发人员选择所需的确切数据以及获取方式来整洁地解决这个问题。这允许他们将其适配到他们的工作流中,而无需 Zonos 为每种情况进行自定义工作(当他们等待时)。

使用 GraphQL 和我们平台中现代化的综合结果使我们的 API 性能更强,使集成 Zonos 到您的系统更快,并使 Zonos 能够更快速地交付新功能。

更好的功能

Zonos 持续开发新功能,GraphQL 是首个(通常也是唯一)接收这些更新的。相比之下,我们的 REST API 被认为是生命周期结束,无法访问许多新功能。

仅限于 GraphQL 的功能示例:

  • Inclusive pricing
  • Labels API
  • New Checkout and Hello
  • Box sizes in API response
  • Dashboard reporting
  • 如果可能,请求 DDP 报价的能力,但如果 DDP 对该国家和该服务级别不可用,仍然返回 DDU 报价
  • 关税、税费和费用的详细分解(项目级别信息、具体费用)——Dashboard 由 GraphQL 支持并为所有商店显示此数据,但 REST API 响应不包含此详细程度
  • 测试模式(即将推出)
预约演示

这个页面有帮助吗?