【发布时间】:2019-07-23 09:23:04
【问题描述】:
我正在编写一个 Apollo GraphQL API,它返回来自各个品牌的产品信息。架构的简化版本如下所示:
type Query {
products: [Product]!
}
type Product {
name: String!
brand: String!
}
我希望能够查询特定品牌的产品。通常,这很容易通过向Product 对象添加brand 参数来实现:
type Query {
products(brand: String!): [Product]!
}
但是,我在不同的应用程序中有多个 GraphQL 客户端,每个客户端都与特定品牌相关联,因此在每个查询中始终传递相同的 brand 参数似乎是多余的。我的架构中还有许多其他对象(订单、交易等),它们是特定于品牌的,需要brand 参数。
此外,我的解析器需要根据品牌查询不同的 API,因此即使是我的架构中的对象,例如 User,在概念上与品牌无关,也可能需要一个 brand 参数,以便解析器知道从哪个 API 获取。
有没有办法为每个客户端设置品牌上下文并让服务器接收此上下文?或者也许有更好的方法来实现这种品牌分离?
【问题讨论】: