我们如何从 REST 到 GraphQL 转变?

阅读时长 3 分钟读完

在前端开发中,RESTful API 已经被广泛应用在 web 应用的开发中。由于它的简单性和易于理解,RESTful 是前端工程师使用的主流工具之一。但是,RESTful API 也有一些缺点,其中最主要的是它不能够很好地处理数据的扁平化问题,这使得它在处理一些复杂应用的时候容易出现问题和限制。而 GraphQL 是最近被广泛使用的一种技术,它的主要优点是它可以对数据进行非常精细的筛选和扁平化。本文会深入探究 RESTful 和 GraphQL 技术,并给出 GraphQL 技术的学习和指导意义。

RESTful API

RESTful API 的主要目标就是让 web 应用程序的数据能够以简单、可靠的方式进行通讯。RESTful API 通常使用 http 协议作为通讯协议,并采用一组基于 URL、HTTP 方法、请求头和响应的格式的标准规范。

例如,我们通过一个 RESTful API 调用一个获取用户信息的接口,我们会通过 http 的 GET 方法请求这个接口,它的 URL 可能是像这样的:/api/user/123,其中 123 是这个用户的标识符。我们发出这样的请求后,我们就会得到这个用户的完整信息。这种方式是非常直截了当和简单的,但是它有一些缺点。

RESTful 的弊端

一个主要的问题就是 RESTful API 不能够很好地处理数据的扁平化问题。这是因为当我们在调用一些需要多个数据层的功能的时候,我们需要对每个数据层发送一个请求。例如,假设我们需要获取一个特定城市的所有餐厅,并且需要知道每个餐厅的菜单、评分和地址。如果我们使用 RESTful API 来实现,那么我们需要发出三个不同的请求:一个是获取城市的所有餐厅,一个是获取每个餐厅的菜单,一个是获取每个餐厅的评分和地址。这样就会导致我们请求得到的数据是无法很好地组合和处理的。

GraphQL 的优势

相比之下,GraphQL 解决了这个扁平化的问题。它可以让前端程序员很容易地获取多个数据层的数据,而无需为每个请求设置一个 RESTful API。GraphQL 通过使用一种新的查询语言来描述数据,可以非常精确地定义需要从后端获取的数据以及如何组合数据。这个查询语言是由 Facebook 开发的,它非常适合于 web 应用程序的需要。

假如我们要获取一个特定城市的所有餐厅,并且需要知道每个餐厅的菜单、评分和地址。如果我们使用 GraphQL 技术来实现,那么我们可能只需要一个查询特定的父级城市,并且通过嵌入子查询来获取每个餐厅的菜单和评分等信息。这样就使得前端程序员可以更自由地发挥他们的创造力和灵活性。

GraphQL 的示例代码

下面是一个通过 GraphQL 获取城市和餐厅信息的示例代码:

-- -------------------- ---- -------
----- -
  -------- ------ -
    ----
    ----------- -
      ----
      ---- -
        ----
        ----- -
          ----
          -----
        -
      -
      ------
      ------- -
        ------
        ----
        -----
      -
    -
  -
-

在这个示例代码中,我们需要获取一个特定城市的所有餐厅,并且需要知道每个餐厅的菜单、评分和地址。我们首先需要提供一个父级的城市,然后我们从这个城市获取所有的餐馆,并通过嵌套的子查询来获取每个餐厅的菜单和评分等信息。

结论

GraphQL 是一种非常有前途的前端技术。它的可靠性和灵活性让前端工程师能够更自由地发挥他们的创造力和灵活性。当您在处理一些复杂的应用程序时,它是一个非常有用的工具,在使用它之前,请确保您已经理解了 RESTful API 的基本概念,并且在使用 GraphQL 技术之前,您已经对它有了一定的了解和实践。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/671cb3269babaf620fb2061e

纠错
反馈