+
95
-

GraphQL 和 REST 有什么区别?

 GraphQL 和 REST 有什么区别?

网友回复

+
15
-

REST 是什么?

REST即表述性状态传递(英文:Representational State Transfer,简称REST),它符合特定的指南,是 Web API 实现的约束。是 Roy Fielding 博士在他的博士论文中提出来的一种软件架构风格。它鼓励客户端和服务器以无状态模式交换信息。 请记住,并非所有 API 都是 REST,但所有 RESTful 服务都是 API。

GraphQL 是什么?

GraphQL是Web API 的查询语言。它由Facebook于2012年创建,并于2015年开源。它既不是架构模式,也不是Web服务。它是个中介,用来查询从各种数据源接收的数据。 这些数据源可以是数据库或Web服务。 多年来,REST已成为Web API的事实上的标准。 由于它使用了标准的HTTP方法(GET,POST,PUT,DELETE等),随着互联网上的Web应用程序的增加,它也得以发展和普及。 此外,它的语言和平台无关,使其成为创建Web服务的更好选择。 因为每个数据都被视为在调用URL时要发送的资源,所以甚至可以使用Web浏览器或使用cURL请求来调用它。

REST的缺点

虽然REST非常成功,但由于RESTful服务的规模和复杂性不断增长,因此它的缺点变得非常明显

1. 多端 (多次数据交互)

在 RESTful 服务中一个 URL 表示一个资源。因此,当要获取多个资源时你必须请求多个不同的 URL,进而带来多次数据交互。 当我们考虑一个博客应用。一篇博客下面有多条评论的情形。通常我们要调用的 URL 如下
GET /posts/<postId> - 获取特定的博客文章
GET /posts/<postId>/comments - 获取上面博客文章关联的所有评论
GET /posts/<postId>/comments/<commentId> - 获取特定博客下的特定评论

你会发现我们要请求的 URL 多了不少。这是因为实体 (这里可以理解为博文和评论)之间的关联关系更加复杂了。随着应用变得越来越复杂,管理这些 API 也变得更加困难。

2. 过度获取/获取后 数据

有时候,当您请求 API 接口时,您会获得不必要的数据和相关数据,有时候您无法获得足够的数据,所以您最终会进行多次往返。 这是 RESTful 服务中的常见问题。 在某些情况下,您可能只需要 2 - 3 个值,但您可以获得大约 20 - 25 个值作为响应。 这只会通过增加响应时间,导致传输大量未使用的数据。 在后一种情况下,您获取的信息可能需要比从单个 URL 获取的信息要多,因此有必要进行多次往返。 这也导致客户端获取所有所需数据所花费的时间成本增加。

3. API版本控制

API 版本控制是一种遵循的方法,以避免使用响应格式的更改来破坏客户端应用程...

点击查看剩余70%

我知道答案,我要回答