Аполлон Федерация шлюз и другая реализация сервера - PullRequest
1 голос
/ 03 июня 2019

Я читаю о федерации Аполлона и о том, как перейти от сшивания схемы, и возник вопрос, когда я прочитал:

Основная стратегия перехода от объединяющего шлюза к федерации Apollo - начать с обеспечения поддержки федерации базовых сервисов

https://www.apollographql.com/docs/apollo-server/federation/migrating-from-stitching/#adding-federation-support-to-services

в принципе, шлюз федерации не может принять другую службу, не поддерживающую федерацию? поэтому нет возможности использовать федерацию с другим сервером GraphQL (например, https://github.com/nuwave/lighthouse), или я должен неправильно понять эту строку?

1 Ответ

3 голосов
/ 03 июня 2019

Да, любой сервис GraphQL, встроенный в шлюз федерации, должен реализовать спецификацию федерации Apollo .

Федерация использует схему службы, содержащую несколько конкретных типов, директив и расширений типов:

scalar _Any
scalar _FieldSet

union _Entity

type _Service {
  sdl: String
}

extend type Query {
  _entities(representations: [_Any!]!): [_Entity]!
  _service: _Service!
}

directive @external on FIELD_DEFINITION
directive @requires(fields: _FieldSet!) on FIELD_DEFINITION
directive @provides(fields: _FieldSet!) on FIELD_DEFINITION
directive @key(fields: _FieldSet!) on OBJECT
directive @extends on OBJECT

Служба не обязательно должна быть реализацией GraphQL.js, но она должна реализовывать вышеуказанные дополнения к схеме, как указано в спецификации.

...