Logo

Característica:

Funciones del esquema

Funciones del esquema

El esquema GraphQL incorpora campos y directivas que exponen funcionalidades del lenguaje de programación PHP.

Campos de función

Los campos de función son campos globales, por lo que se añaden a todos los tipos del esquema GraphQL: en QueryRoot, pero también en Post, User, etc.

Los campos de función son útiles para manipular los datos una vez recuperados, permitiéndonos transformar el valor de un campo de la forma que sea necesario, y otorgándonos potentes capacidades de importación/exportación de datos.

Por ejemplo, aunque tenemos el campo Post.hasComments, puede que necesitemos el valor opuesto. En lugar de crear un nuevo campo Post.notHasComments (para el cual tendríamos que editar código PHP), podemos usar la funcionalidad Field to Input para pasar el valor de hasComments a un campo not, calculando así el nuevo valor siempre dentro de la consulta GraphQL:

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

Directivas de función

El esquema GraphQL incorpora directivas que exponen funcionalidades comunes en lenguajes de programación (como PHP).

Las directivas de campo son útiles para manipular los datos una vez recuperados, permitiéndonos transformar el valor de un campo de la forma que sea necesario, y otorgándonos potentes capacidades de importación/exportación de datos.

Por ejemplo, esta consulta:

query {
  posts {
    title @strUpperCase
  }
}

...producirá esta respuesta:

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

Campos auxiliares

El esquema GraphQL añade campos que proporcionan funcionalidad auxiliar de uso común.

Los campos auxiliares son campos globales, por lo que se añaden a todos los tipos del esquema GraphQL: en QueryRoot, pero también en Post, User, etc.

En esta consulta, recuperamos los IDs de los usuarios del sitio web y ejecutamos una nueva consulta GraphQL pasando su ID como parámetro:

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
    }
  }
}

Campos de entorno

El esquema GraphQL incorpora el campo global _env, que permite obtener el valor de una variable de entorno, o de una constante PHP (más comúnmente definida en wp-config.php, pero que también puede definirse en otro lugar).

Esta consulta recupera la constante de entorno GITHUB_ACCESS_TOKEN que podríamos configurar para acceder a un repositorio privado en GitHub:

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

Suscríbete a nuestra newsletter

Mantente al tanto de todas las novedades de Gato GraphQL.