Logo

Funzionalità:

Funzioni dello schema

Funzioni dello schema

Lo schema GraphQL è dotato di campi e direttive che espongono le funzionalità del linguaggio di programmazione PHP.

Campi di funzione

I campi di funzione sono Campi globali, pertanto vengono aggiunti a ogni singolo tipo nello schema GraphQL: in QueryRoot, ma anche in Post, User, ecc.

I campi di funzione sono utili per manipolare i dati una volta recuperati, consentendoci di trasformare il valore di un campo nel modo richiesto, e offrendoci potenti capacità di importazione/esportazione dei dati.

Ad esempio, pur disponendo di un campo Post.hasComments, potremmo aver bisogno del valore opposto. Invece di creare un nuovo campo Post.notHasComments (il che richiederebbe di modificare il codice PHP), possiamo usare la funzionalità Field to Input per passare il valore di hasComments in un campo not, calcolando così il nuovo valore direttamente all'interno della query GraphQL:

query {
  posts {
    id
    hasComments
    notHasComments: _not(value: $__hasComments)
  }
}

Direttive di funzione

Lo schema GraphQL è dotato di direttive che espongono funzionalità comunemente presenti nei linguaggi di programmazione (come PHP).

I campi di direttiva sono utili per manipolare i dati una volta recuperati, consentendoci di trasformare il valore di un campo nel modo richiesto, e offrendoci potenti capacità di importazione/esportazione dei dati.

Ad esempio, questa query:

query {
  posts {
    title @strUpperCase
  }
}

...produrrà questa risposta:

{
  "data": {
    "posts": [
      {
        "title": "HELLO WORLD!"
      },
      {
        "title": "LOVELY WEATHER"
      }
    ]
  }
}

Campi ausiliari

Allo schema GraphQL vengono aggiunti campi che forniscono funzionalità ausiliarie di uso comune.

I campi ausiliari sono Campi globali, pertanto vengono aggiunti a ogni singolo tipo nello schema GraphQL: in QueryRoot, ma anche in Post, User, ecc.

In questa query, recuperiamo gli ID degli utenti del sito ed eseguiamo una nuova query GraphQL passando il loro ID come parametro:

query {
  users {
    userID: id
    url: _urlAddParams(
      url: "https://somewebsite/endpoint/user-data",
      params: {
        userID: $__userID
      }
    )
    headers: _httpRequestHeaders
    headerNameValueEntryList: _objectConvertToNameValueEntryList(
      object: $__headers
    )
    _sendHTTPRequest(input: {
      url: $__url
      options: {
        headers: $__headerNameValueEntryList
      }
    }) {
      statusCode
      contentType
      body
    }
  }
}

Campi di ambiente

Lo schema GraphQL è dotato del campo globale _env, che consente di ottenere un valore da una variabile d'ambiente, o da una costante PHP (definita più comunemente in wp-config.php, ma che può essere definita anche altrove).

Questa query recupera la costante d'ambiente GITHUB_ACCESS_TOKEN che potremmo configurare per accedere a un repository privato su GitHub:

query {
  githubAccessToken: _env(name: "GITHUB_ACCESS_TOKEN")
}

Iscriviti alla nostra newsletter

Resta aggiornato su tutte le novità di Gato GraphQL.