冒着有人恨我并低估这个问题的风险,我想确保理解GraphQL的工作原理。以下是我对GraphQL优于RESTful API的一种方式的理解。假设您有user
型号:
{
user: {
firstName: "John",
lasName: "Smith",
username: "jsmith",
email: "jsmith@company.com",
gender: "M",
password: "password"
}
}
然后,您为应用的个人资料页面的get
此用户信息进行API调用。我们假设您只想要用户firstName
(可能会显示欢迎信息)。
axios.get(get_user_info_url).then(res => {
const firstName = res.data.user.firstName
})
所以,这里发生的事情是来自服务器的res
包含该用户信息的全部,其中包含我们不知道的数据。关心(例如他的username
和email
)。这意味着服务器正在下载该用户数据的所有,并将其发送回客户端。但是,客户端只关心firstName
,并且基本上忽略了其他一切。因此,如果user
模型上有数十(或数百)个属性,我们就会过度收集,因为我们正在下载我们根本不需要的数据。
在这个例子中,要获得他的名字,我们必须设置res.data.user.firstName
。但是,使用GraphQL,服务器只返回 用户的firstName
,而不是其他信息。因此,使用GraphQL,我们不会从服务器下载整个用户模型(过度获取)。
相反,我们只下载我们需要的数据(例如他的firstName
)。如果用户有几十个属性,这将是有益的,因为我们只会获取/下载我们实际需要的数据。
对GraphQL的理解是否正确?
答案 0 :(得分:0)
我相信GraphQL更适用于您需要的数据比一个字段多得多的情况。它有助于避免字段和属性的“过度提取”。与REST相比,它向服务器发出的请求更少,从而使您有机会获取它,从而减少了延迟。两个通信接口都具有t heir drawbacks,但作为任何工具,它们都和拥有它们的接口一样好:)