Да, вы должны быть в состоянии сделать это или что-то очень похожее, используя директивы, проверьте это:
https://www.apollographql.com/docs/graphql-tools/schema-directives.html#Fetching-data-from-a-REST-API
Я буквально опубликую цитату и пример из этой статьи.здесь.
Предположим, вы определили тип объекта, соответствующий ресурсу REST, и вы хотите избежать реализации функций распознавателя для каждого поля
const typeDefs = `
directive @rest(url: String) on FIELD_DEFINITION
type Query {
people: [Person] @rest(url: "/api/v1/people")
}`;
class RestDirective extends SchemaDirectiveVisitor {
public visitFieldDefinition(field) {
const { url } = this.args;
field.resolve = () => fetch(url);
}
}
Согласносогласно спецификации, механизм выполнения GraphQL работает с наборами выбора, которые разбиты на отдельные поля.Каждое отдельное поле будет проверено на наличие значения или существующего преобразователя.
Кажется, что если вы определяете директиву, подобную приведенной выше, вы не изменяете это основное поведение, но перехватываете и добавляетедополнительный пользовательский шаг, который должен быть выполнен перед дальнейшим разрешением.
Возможно, что-то подобное возможно с пользовательскими скалярами, но это не будет хорошо работать с дизайном схемы.