我想确保我了解GraphQl的工作原理。这是我对GraphQL如何优于静止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
包括该用户信息的 ALL ,其中包括我们不关心的数据(例如他的username
和email
(。这意味着服务器正在下载此用户数据的全部,并将其发送回客户端。但是,客户只关心firstName
,基本上无视其他所有内容。因此,如果user
模型上有数十个(或数百个(属性,我们会过度取回,因为我们正在下载我们简单的数据。
在此示例中,要获取他的名字,我们必须设置res.data.user.firstName
。但是,使用GraphQL,服务器仅发送仅发送用户的firstName
,而不是其余的信息。因此,使用GraphQL,我们不会从服务器(过度取回(下载整个用户模型。相反,我们只下载所需的数据(例如他的firstName
(。如果用户具有数十个属性,这将是有益的,因为我们只会获取/下载我们实际需要的数据。
这种对GraphQl的理解是否正确?
我相信,当您知道比仅一个字段所需的数据要多得多时,GraphQl更适合。它有助于避免"过度取得"字段和属性。它使您有机会通过更少向服务器的请求(与休息,减少延迟(获取来获取它。两个通信接口都有其缺点,但是作为任何工具,它们都与持有它们一样好:(