Я пишу API Apollo GraphQL, который возвращает информацию о продуктах различных брендов.Упрощенная версия схемы выглядит следующим образом:
type Query {
products: [Product]!
}
type Product {
name: String!
brand: String!
}
Я хочу иметь возможность запрашивать продукты определенного бренда.Обычно этого было бы легко достичь, добавив аргумент brand
к объекту Product
:
type Query {
products(brand: String!): [Product]!
}
Однако у меня есть несколько клиентов GraphQL в разных приложениях, и каждый связан с определенной маркой, поэтомукажется избыточным, чтобы всегда передавать один и тот же аргумент brand
в каждом запросе.У меня также есть много других объектов в моей схеме (заказы, транзакции и т. Д.), Которые специфичны для бренда и требуют аргумента brand
.
Кроме того, мои средства распознавания должны запрашивать другой API в зависимости отбренд, поэтому даже объекты в моей схеме, такие как User
, которые концептуально не связаны с брендом, потенциально могут нуждаться в аргументе brand
, чтобы распознаватель знал, из какого API следует выбирать.
Есть лиспособ установить контекст бренда для каждого клиента и получить этот контекст на сервере?Или, может быть, есть лучший способ добиться разделения бренда?