Что я хочу сделать?
На сервере Apollo Graphl я хочу изменить сущность Person
на Human
в схеме, но я не хочу ломать своих клиентов (интерфейс, который запрашивает graphql). Поэтому, если клиент делает запрос для Person
, я хочу сопоставить его с Human
.
Пример:
ЗАПРОС КЛИЕНТА
query {
Person {
ID
firstName
}
}
ПЕРЕЗАПИСАТЬ НА
query {
Human {
ID
name
}
}
ПЕРЕПИСАТЬ ОТВЕТ
{
data: {
Person: {
Id: 123,
name:"abc"
}
}
}
Вещи, которые я пробовал
graphql-rewriter обеспечивает нечто похожее на то, что я ищу. Я просмотрел документацию, но у него нет возможности переписать имя поля.
В документации apollo graphql Директивы Apollow graphql , Они упоминали о директиве переименования, но я не нашел rename-directive-package
модуль узла.
apollo-directives-package Я тоже пробовал это, но у него нет возможности переименовать поле скейлера, например
import { makeExecutableSchema } from "graphql-tools";
import { RenameDirective } from "rename-directive-package";
const typeDefs = `
type Person @rename(to: "Human") {
name: String!
currentDateMinusDateOfBirth: Int @rename(to: "age")
}`;
const schema = makeExecutableSchema({
typeDefs,
schemaDirectives: {
rename: RenameDirective
}
});
Любые предложения / помощь будут оценены.