#node.js #graphql #apollo-server #typegraphql #apollo-federation
Вопрос:
Я работаю в проекте GraphQL, используя node
typegraphql
apollo-server
. Моя цель-иметь конкретные показатели для регулярных запросов и отдельно от федераций. Можно ли отличить его от сервера, который запрашивается и разрешает данные?
Под обычным запросом я подразумеваю:
Клиент запрашивает User
-gt; Сервер Apollo Gateway -gt;gt; Пользователь Сервер Apollo решает User
И под федеративным я имею в виду:
Клиент запрашивает профиль (который содержит внешний User
) -gt; Сервер Apollo Gateway -gt;gt; Пользователь Сервер Apollo разрешает User
По-видимому, это возможно с помощью платформы DGS, @DgsQuery
предназначено для обычных распознавателей и @DgsEntityFetcher(name = "User")
будет работать для распознавателя федерации.
Зависимости, связанные с проектом, являются:
"dependencies": { "@apollo/federation": "^0.30.0", "apollo-datasource-rest": "^3.1.1", "apollo-graphql": "^0.9.3", "apollo-server": "^3.1.2", "apollo-server-express": "^3.1.2", "graphql": "^15.5.1", "graphql-tag": "^2.12.5", "graphql-tools": "^8.1.0", "type-graphql": "^1.1.1" }
Ответ №1:
В итоге я добавил метрики в reference
распознаватель, который настроен в схеме следующим образом:
import { addResolversToSchema } from 'apollo-graphql'; function resolveUserReference() { // Resolve User metrics } const referenceResolvers = { User: { __resolveReference: resolveUserReference }, }; addResolversToSchema(yourFederatedSchema, referenceResolvers);