Biblioteca de queries
Biblioteca de queriesFiltrar dados de uma API externa

Filtrar dados de uma API externa

Se precisarmos buscar dados de uma API externa, mas precisarmos apenas dos resultados que satisfaçam alguma condição (como ter um campo com valor não vazio), e a API não suportar filtragem, podemos usar o Gato GraphQL para implementar um gateway de API que remove as entradas que não satisfazem nossa condição.

Por exemplo, ao invocar o endpoint REST API /users de algum site WordPress, podemos filtrar os usuários que têm o campo url vazio:

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
}