Библиотека queries
Библиотека queriesФильтрация данных из внешнего API

Фильтрация данных из внешнего API

Если нам нужно получить данные из внешнего API, но нужны только те результаты, которые удовлетворяют некоторому условию (например, наличие поля с непустым значением), а API не поддерживает фильтрацию, мы можем использовать Gato GraphQL для реализации шлюза API, который удаляет записи, не соответствующие нашему условию.

Например, при вызове endpoint REST API /users с какого-либо сайта WordPress можно отфильтровать пользователей с пустым полем url:

query FilterDataFromWordPressAPI(
  # eg: https://somesite.com/wp-json/wp/v2/users/?_fields=id,name,url
  $endpointURL: URL!
) {
  usersWithWebsiteURL: _sendJSONObjectCollectionHTTPRequest(
    input: {
      url: $endpointURL
    }
  )
    # Remove users without a website URL
    @underEachArrayItem(
      passValueOnwardsAs: "userDataEntry"
      affectDirectivesUnderPos: [1, 2, 3]
    )
      @applyField(
        name: "_objectProperty"
        arguments: {
          object: $userDataEntry
          by: {
            key: "url"
          }
        }
        passOnwardsAs: "websiteURL"
      )
      @applyField(
        name: "_isEmpty"
        arguments: {
          value: $websiteURL
        }
        passOnwardsAs: "isWebsiteURLEmpty"
      )
      @if(
        condition: $isWebsiteURLEmpty
      )
        @setNull
    @arrayFilter
}