Si j'ai un ensemble de champs communs à plusieurs types dans mon schéma GraphQL, existe-t-il un moyen de faire quelque chose comme ça?
type Address {
line1: String
city: String
state: String
Zip: String
}
fragment NameAndAddress on Person, Business {
name: String
address: Address
}
type Business {
...NameAndAddress
hours: String
}
type Customer {
...NameAndAddress
customerSince: Date
}
Les fragments ne sont utilisés que du côté client lors des requêtes - ils ne peuvent pas être utilisés dans votre schéma. GraphQL ne prend pas en charge l'héritage de type ou tout autre mécanisme qui réduirait la redondance d'avoir à écrire les mêmes champs pour différents types.
Si vous utilisez apollo-server
, les définitions de types qui composent votre schéma ne sont qu'une chaîne, vous pouvez donc implémenter les fonctionnalités que vous recherchez à travers des littéraux de modèle:
const nameAndAddress = `
name: String
address: Address
`
const typeDefs = `
type Business {
${nameAndAddress}
hours: String
}
type Customer {
${nameAndAddress}
customerSince: Date
}
`
Alternativement, il existe des bibliothèques, comme graphql-s2s , qui vous permettent d'utiliser l'héritage de types.
Je ne sais pas s'il n'était pas disponible à l'heure des questions, mais je suppose que interfaces devrait répondre à vos besoins