Biblioteka queries
Biblioteka queriesFiltrowanie danych z zewnętrznego API

Filtrowanie danych z zewnętrznego API

Jeśli potrzebujemy pobrać dane z zewnętrznego API, ale potrzebujemy tylko tych wyników, które spełniają określony warunek (np. posiadania pola z niepustą wartością), a API nie obsługuje filtrowania, możemy użyć Gato GraphQL do zaimplementowania bramki API, która usuwa wpisy niespełniające naszego warunku.

Na przykład, wywołując endpoint REST API /users z jakiejś witryny WordPress, możemy odfiltrować tych użytkowników, którzy mają puste pole 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
}