Tipi 'Enum String'
Alcune informazioni possono avere solo un valore proveniente da un insieme predefinito, il che andrebbe idealmente modellato utilizzando un tipo Enum. Tuttavia, i tipi enum hanno la limitazione che i loro valori non possono includere il carattere "-", e ci sono occasioni in cui questo non può essere evitato.
Per esempio, avrebbe senso avere un tipo enum CustomPostEnum, che elenca tutti i custom post type che possono essere interrogati (cioè quelli registrati nel sito, e a cui è stato permesso di essere interrogati). Tuttavia, i custom post type possono includere il carattere "-" nei loro nomi, come nell'esempio "some-custom-cpt" qui sotto:
{
customPosts(
filter: {
customPostTypes: ["post", "product", "some-custom-cpt"]
}
) {
# ...
}
}A causa di questa limitazione, questo tipo non può essere un tipo enum. Al suo posto, Gato GraphQL lo implementa come un tipo personalizzato "Enum String", che è un tipo String che può ricevere solo un valore da un insieme predefinito, simile a un Enum.
Esempi di tipi EnumString implementati nello schema GraphQL includono:
CustomPostEnumStringTagTaxonomyEnumStringCategoryTaxonomyEnumStringMenuLocationEnumString
Introspezione: interrogare i valori possibili per i tipi "Enum String"
Possiamo recuperare la lista dei valori accettati per ogni tipo EnumString tramite l'introspezione:
query EnumStringTypePossibleValues {
__schema {
types {
name
extensions {
# This will print the enum-like "possible values" for EnumString type resolvers, or `null` otherwise
possibleValues
}
}
}
}