我发现 GraphQL 允许用户限制他们接收的数据,但这可以在 REST API 上轻松完成。
例如,您可以有一个/users
端点,该端点在请求正文中采用query
数组,从而限制从服务器返回的列。
还是我还缺少其他东西?
编辑:作为免责声明,我并不是询问哪个更好的意见。我要求的是 GraphQL 能做而 REST 不能做的具体事情。
我发现 GraphQL 允许用户限制他们接收的数据,但这可以在 REST API 上轻松完成。
例如,您可以有一个/users
端点,该端点在请求正文中采用query
数组,从而限制从服务器返回的列。
还是我还缺少其他东西?
编辑:作为免责声明,我并不是询问哪个更好的意见。我要求的是 GraphQL 能做而 REST 不能做的具体事情。
是的,你完全正确;在 REST 中,您可以设计一个接受查询参数或请求标头的端点,以控制在响应中接收的数据。但仍然存在一些关键差异,使 GraphQL 变得更好:
因此,虽然可以使用自定义端点和查询参数使 REST 更加灵活,但 GraphQL 是从头开始设计的,旨在以更直观的方式提供这种灵活性和效率,特别是对于复杂的数据检索场景。
您是正确的,可以通过在请求中包含查询参数来限制 REST API 返回的数据。然而,GraphQL 提供了许多优势,下面是一个用于获取用户姓名和电子邮件地址的 GraphQL 查询示例:
以下是获取相同数据的 REST API 请求的示例:
正如您所看到的,GraphQL 查询更加简洁且更易于阅读。它也更加灵活,因为您可以轻松地向查询添加其他字段,而无需修改请求。
我希望我已经正确回答了你的问题
有一些关键的差异使得 GraphQL 在某些情况下更加灵活。让我用一个例子来解释一下:
REST: 假设您想要从图书馆的 API 获取有关书籍的信息。在 REST API 中,您可能有如下端点:
获取书名:
GET /books/1/title
获取书的作者:GET /books/1/author
获取书的出版日期:GET /books/1/publication_date
每个端点都对应于关于本书的一条特定信息。如果您需要所有这些信息,则需要向服务器发出三个单独的请求。这可能效率低下,尤其是当您需要更多或更少的数据或需要来自多个相关资源的数据时。
图形语言:
在 GraphQL 中,您向服务器发送一个查询,明确指定您想要的数据,然后您只返回该数据。它看起来是这样的:
在这个单一查询中,您询问书名、作者和出版日期。然后,服务器在单个响应中使用所有请求的数据进行响应。