Queries-Bibliothek
Queries-BibliothekDaten aus einer externen API filtern

Daten aus einer externen API filtern

Wenn wir Daten von einer externen API abrufen müssen, aber nur die Ergebnisse benötigen, die eine bestimmte Bedingung erfüllen (z. B. ein Feld mit einem nicht leeren Wert), und die API keine Filterung unterstützt, können wir Gato GraphQL nutzen, um ein API-Gateway zu implementieren, das die Einträge entfernt, die unsere Bedingung nicht erfüllen.

Wenn wir zum Beispiel den REST API-Endpoint /users einer WordPress-Website aufrufen, können wir die Nutzer herausfiltern, deren Feld url leer ist:

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
}