GraphQL如何比休息更好



我想确保我了解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 ,其中包括我们不关心的数据(例如他的usernameemail(。这意味着服务器正在下载此用户数据的全部,并将其发送回客户端。但是,客户只关心firstName,基本上无视其他所有内容。因此,如果user模型上有数十个(或数百个(属性,我们会过度取回,因为我们正在下载我们简单的数据。

在此示例中,要获取他的名字,我们必须设置res.data.user.firstName。但是,使用GraphQL,服务器仅发送仅发送用户的firstName,而不是其余的信息。因此,使用GraphQL,我们不会从服务器(过度取回(下载整个用户模型。相反,我们只下载所需的数据(例如他的firstName(。如果用户具有数十个属性,这将是有益的,因为我们只会获取/下载我们实际需要的数据。

这种对GraphQl的理解是否正确?

我相信,当您知道比仅一个字段所需的数据要多得多时,GraphQl更适合。它有助于避免"过度取得"字段和属性。它使您有机会通过更少向服务器的请求(与休息,减少延迟(获取来获取它。两个通信接口都有其缺点,但是作为任何工具,它们都与持有它们一样好:(

相关内容

  • 没有找到相关文章

最新更新