GraphQL 是一种现代的 API 设计语言,它简化了前端和后端之间的数据交互以及开发和维护 API 的工作量。其中接口(Interface)是其核心特性之一,本文详细介绍 GraphQL 中的接口以及如何使用它们。
接口的定义
在 GraphQL 中,接口是一种定义类型的方式,这些类型具有相同的字段和特性。在 GraphQL 的 Schema 中,可以用 interface
关键字定义一个接口,并定义一个或多个字段。例如:
interface Person { id: ID! name: String! age: Int }
这个 Person
接口有 id
、name
和 age
三个字段,其中 id
和 name
是必需的,age
是可选的。
定义了接口后,还需要根据接口定义实现类型。比如,假设我们要实现一个 User
类型,来表示一个网站的注册用户。我们可以这样定义:
type User implements Person { id: ID! name: String! age: Int email: String! }
这个 User
类型实现了 Person
接口,因此必须有 id
和 name
两个必需字段,以及 age
可选字段。此外,它还有一个额外的 email
字段。
接口的使用
接口的使用在 GraphQL 查询中非常方便。假设我们有一个查询,要同时查询出多个 Person
型的对象:
-- -------------------- ---- ------- ----- ------ - ------ - -- ---- --- --- -- ---- - ----- - - -
在查询结果中,我们可以看到 id
、name
和 age
字段,以及 email
字段,如果实现了 Person
接口的类型中有 email
字段时,会返回它。
这样,我们就可以利用接口的特性,轻松地查询多个类型的对象,并获取它们共同的字段和特性,避免了反复书写相同的代码。
示例代码
下面是一个完整的 GraphQL Schema 和查询的示例代码:
-- -------------------- ---- ------- --------- ------ - --- --- ----- ------- ---- --- - ---- ---- ---------- ------ - --- --- ----- ------- ---- --- ------ ------- - ---- ---- ---------- ------ - --- --- ----- ------- ---- --- -------- ---------- - ---- ----- - ------- ---------- - ------ - ------ ----- -
-- -------------------- ---- ------- - ------ - -- ---- --- --- -- ---- - ----- - --- -- ---- - ------- - -- ---- - - - -
总结
接口是 GraphQL 的一个重要特性,可以帮助我们定义和查询多个类型的对象,并获取它们共同的字段和特性。在实现 GraphQL API 时,接口的使用可以提高代码的复用性和可读性,值得我们深入学习和掌握。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d4aa9ab5eee0b525c6b82a