
Funzionalità :
Input object 'oneOf'
Input object 'oneOf'
L'input object oneOf è un tipo particolare di input object, dove esattamente uno dei campi di input deve essere fornito come ingresso, altrimenti il server restituisce un errore di validazione. Questo comportamento introduce il polimorfismo per gli input in GraphQL, consentendoci di progettare schemi più ordinati.
Ad esempio, recuperare un utente nella nostra applicazione potrebbe essere fatto tramite diverse proprietà , come l'ID utente o l'e-mail. Per farlo, normalmente avremmo bisogno di creare un campo separato per ciascuna proprietà :
type Query {
userByID(id: ID!): User
userByEmail(email: String!): User
}Grazie all'input object oneOf, possiamo invece avere un unico campo user che accetta tutte le proprietà tramite un input object oneOf UserByInput, sapendo che solo una delle proprietà (sia l'ID che l'e-mail) può e deve essere fornita:
type Query {
user(by: UserByInput!): User
}
input UserByInput @oneOf {
id: ID
email: String
}Nella query, forniamo il valore di input per esattamente una delle proprietà :
{
tom: user(by: {
id: 1
}) {
name
}
jerry: user(by: {
email: "jerry@warnerbros.com"
}) {
name
}
}