Bibliothèque de queries
Bibliothèque de queriesFiltrer des données depuis une API externe

Filtrer des données depuis une API externe

Si nous avons besoin de récupérer des données depuis une API externe, mais que nous ne voulons que les résultats satisfaisant une condition (comme avoir un champ avec une valeur non vide), et que l'API ne prend pas en charge le filtrage, nous pouvons alors utiliser Gato GraphQL pour implémenter une passerelle d'API qui supprime les entrées ne satisfaisant pas notre condition.

Par exemple, lors de l'appel à l'endpoint REST API /users d'un site WordPress, nous pouvons exclure les utilisateurs dont le champ url est vide :

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
}