Шлюз федерации Apollo: включите локальные схемы при создании суперграфа
При составлении суперграфа для шлюза Федерации Аполлона вы должны создать
.yaml
config с 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,
});
}
},
});