Logo

Возможность:

Функции схемы

Функции схемы

Схема GraphQL оснащена полями и директивами, которые открывают доступ к функциональности языка программирования PHP.

Поля функций

Поля функций являются глобальными полями и поэтому добавляются ко всем типам в схеме GraphQL: в QueryRoot, а также в Post, User и т.д.

Поля функций полезны для обработки данных после их получения — они позволяют преобразовывать значение поля любым необходимым способом и предоставляют мощные возможности импорта/экспорта данных.

Например, несмотря на то что у нас есть поле Post.hasComments, может понадобиться противоположное значение. Вместо того чтобы создавать новое поле Post.notHasComments (для чего потребовалось бы редактировать PHP-код), можно использовать функцию Field to Input, чтобы передать значение из hasComments в поле not и таким образом вычислить новое значение непосредственно внутри GraphQL query:

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

Директивы функций

Схема GraphQL оснащена директивами, которые открывают доступ к функциональности, распространённой в языках программирования (например, PHP).

Директивы полей полезны для обработки данных после их получения — они позволяют преобразовывать значение поля любым необходимым способом и предоставляют мощные возможности импорта/экспорта данных.

Например, этот query:

query {
  posts {
    title @strUpperCase
  }
}

...вернёт следующий ответ:

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

Вспомогательные поля

В схему GraphQL добавляются поля, предоставляющие часто используемую вспомогательную функциональность.

Вспомогательные поля являются глобальными полями и поэтому добавляются ко всем типам в схеме GraphQL: в QueryRoot, а также в Post, User и т.д.

В этом query мы получаем идентификаторы пользователей сайта и выполняем новый GraphQL query, передавая их ID в качестве параметра:

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

Поля окружения

Схема GraphQL оснащена глобальным полем _env, которое позволяет получить значение переменной окружения или PHP-константы (чаще всего определяемой в wp-config.php, но которая может быть определена и в другом месте).

Этот query получает константу окружения GITHUB_ACCESS_TOKEN, которую можно настроить для доступа к приватному репозиторию на GitHub:

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

Подпишитесь на нашу рассылку

Будьте в курсе всех обновлений Gato GraphQL.