Шлюз федерации Apollo: включите локальные схемы при создании суперграфа

При составлении суперграфа для шлюза Федерации Аполлона вы должны создать .yamlconfig с URL-адресами маршрутизации к подграфам. Пример: https://github.com/apollographql/supergraph-demo/blob/main/subgraphs/inventory/inventory.js

      //supergraph.yaml
subgraphs:
  inventory:
    routing_url: http://inventory:4000/graphql
    schema:
      file: ./subgraphs/inventory/inventory.graphql
  products:
    routing_url: http://products:4000/graphql
    schema:
      file: ./subgraphs/products/products.graphql
  users:
    routing_url: http://users:4000/graphql
    schema:
      file: ./subgraphs/users/users.graphql

В приведенном выше примере они запускают сервер Apollo для каждого подграфа и составляют надграф. Можно ли составить суперграф без запуска серверов Apollo и просто включая локальные схемы?

1 ответ

Ты можешь. Следуя этому руководству: https://www.apollographql.com/blog/backend/using-apollo-federation-with-local-schemas/

Вместо использования суперграфов и подграфов используйте serviceList и условно постройте источник данных.

      const gateway = new ApolloGateway({
  serviceList: [
    { name: "products", url: "http://localhost:4002" },
    { name: "countries", url: "http://countries" },
  ],
  buildService: ({ url }) => {
    if (url === "http://countries") {
      return new LocalGraphQLDataSource(getCountriesSchema());
    } else {
      return new RemoteGraphQLDataSource({
        url,
      });
    }
  },
});
Другие вопросы по тегам