GraphQL实战:写给全栈工程师们
上QQ阅读APP看书,第一时间看更新

2.5.2 联合

需求 “书和新朋友”——API提供一个搜索功能,返回的结果里可以有书,也可以有新朋友。

使用接口和继承,适合有公共字段的类型,比如红酒和图书。可如果想把完全没有公共字段的几种类型放在一起查询,接口和继承就不那么适用了。

这种情况下,可以定义一个联合(Union)类型:

当查询返回一个上面定义的Resouce联合类型时,这个结果可以是本图书(Book),也可能是个用户(User)。图书和用户被称作Resouce这个联合类型的成员。

注意:不能以接口或者联合为成员来创建一个联合,比如union Resouce=Product |User,如果Product是个接口或者是个联合,那么这个定义就是非法的。

定义接口和联合可以让开发者在一个查询中返回更丰富的数据类型。但不同的数据类型会有不同的字段。