5 minutos
Como Fazer Queries de um Aplicativo
Aprenda a solicitar um query do The Graph a partir do seu aplicativo.
Como Resgatar Pontos Finais da GraphQL
Durante o processo de programação, você receberá um ponto final da API da GraphQL em dois estágios diferentes: um para testar no Subgraph Studio, e outro para fazer queries à The Graph Network na produção.
Ponto Final do Subgraph Studio
Após implementar o seu subgraph ao Subgraph Studio, você receberá um ponto final parecido com isto:
1https://api.studio.thegraph.com/query/<ID>/<SUBGRAPH_NAME>/<VERSION>Este ponto final é apenas para testes, e tem limite de taxa.
Ponto Final da The Graph Network
Após editar o seu subgraph à rede, você receberá um ponto final parecido com isto:
1https://gateway.thegraph.com/api/<API_KEY>/subgraphs/id/<SUBGRAPH_ID>O ponto final é feito para uso ativo na rede, e permite o uso de várias bibliotecas de cliente da GraphQL para solicitar queries do subgraph e popular o seu aplicativo com dados indexados.
Como Usar Clientes GraphQL Populares
Graph Client
O The Graph fornece um cliente GraphQL próprio, graph-client, que apoia recursos únicos como:
- Gestão de Subgraph Entre Chains: Queries de múltiplos subgraphs numa única consulta
 - Rastreamento Automático de Blocos
 - Paginação Automática
 - Resultado totalmente digitado
 
Observação: o graph-client também é integrado com clientes GraphQL populares como Apollo e URQL, compatíveis com todos os ambientes (React, Angular, Node.js, React Native); utilizar o graph-client proverá a melhor experiência para interagir com o The Graph.
Como Resgatar Dados com o Graph Client
Vamos ver como retirar dados de um subgraph com o graph-client:
Passo 1
Instale a CLI do The Graph Client no seu projeto:
1yarn add -D @graphprotocol/client-cli2# ou, com NPM:3npm install --save-dev @graphprotocol/client-cliPasso 2
Defina o seu query num arquivo .graphql (ou embutido no seu arquivo, .js ou .ts):
1query ExampleQuery {2  # este vem do compound-v23  markets(first: 7) {4    borrowRate5    cash6    collateralFactor7  }8  # este vem do uniswap-v29  pair(id: "0x00004ee988665cdda9a1080d5792cecd16dc1220") {10    id11    token0 {12      id13      symbol14      name15    }16    token1 {17      id18      symbol19      name20    }21  }22}Passo 3
Depois, crie um arquivo de configuração (chamado .graphclientrc.yml) e aponte aos seus endpoints GraphQL oferecidos pelo The Graph, por exemplo:
1# .graphclientrc.yml2sources:3  - name: uniswapv24    handler:5      graphql:6        endpoint: https://gateway.thegraph.com/api/<API_KEY>/subgraphs/id/<SUBGRAPH_ID>7  - name: compoundv28    handler:9      graphql:10        endpoint: https://gateway.thegraph.com/api/<API_KEY>/subgraphs/id/<SUBGRAPH_ID>1112documents:13  - ./src/example-query.graphqlPasso 4
Execute o seguinte comando na CLI do Graph Client para gerar códigos JavaScript digitados e prontos para uso:
1graphclient buildPasso 5
Atualize o seu arquivo .ts para usar os documentos digitados em GraphQL já gerados:
1import React, { useEffect } from 'react'2// ...3// Importamos tipos e documentos digitados da graphql do código gerado (`..graphclient/`)4import { ExampleQueryDocument, ExampleQueryQuery, execute } from '../.graphclient'56function App() {7  const [data, setData] = React.useState<ExampleQueryQuery>()89  useEffect(() => {10    execute(ExampleQueryDocument, {}).then((result) => {11      setData(result?.data)12    })13  }, [setData])14  return (15    <div className="App">16      <header className="App-header">17        <img src={logo} className="App-logo" alt="logo" />18        <p>Graph Client Example</p>19        <fieldset>20          {data && (21            <form>22              <label>Data</label>23              <br />24              <textarea value={JSON.stringify(data, null, 2)} readOnly rows={25} />25            </form>26          )}27        </fieldset>28      </header>29    </div>30  )31}3233export default AppImportante: graph-client é perfeitamente integrado com outros clientes GraphQL, como Apollo, URQL, ou React Query; mais exemplos no repositório oficial. No entanto, se escolher outro cliente, lembre-se que não terá como usar o Manuseio de Subgraphs Cross-chain ou a Paginação Automática, que são recursos essenciais para consultar o The Graph.
Cliente Apollo
O Apollo é um cliente GraphQL comum em ecossistemas de front-end. Disponível para React, Angular, Vue, Ember, iOS, e Android.
É o cliente mais pesado, mas tem muitas funções para construir interfaces avançadas em cima da GraphQL:
- Tratamento de erros avançado
 - Paginação
 - Pré-resgate de dados
 - Interface otimista
 - Gestão de estado local
 
Como Resgatar Dados pelo Cliente Apollo
Vamos ver como retirar dados de um subgraph com o cliente Apollo:
Passo 1
Primeiro, instale o @apollo/client e o graphql:
1npm install @apollo/client graphqlPasso 2
Depois, solicite um query da API com o seguinte código:
1import { ApolloClient, InMemoryCache, gql } from '@apollo/client'23const APIURL = 'https://gateway.thegraph.com/api/<API_KEY>/subgraphs/id/<SUBGRAPH_ID>'45const tokensQuery = `6  query {7    tokens {8      id9      tokenID10      contentURI11      metadataURI12    }13  }14`1516const client = new ApolloClient({17  uri: APIURL,18  cache: new InMemoryCache(),19})2021client22  .query({23    query: gql(tokensQuery),24  })25  .then((data) => console.log('Subgraph data: ', data))26  .catch((err) => {27    console.log('Error fetching data: ', err)28  })Passo 3
Para usar variáveis, dá para passar um argumento variables ao query:
1const tokensQuery = `2  query($first: Int, $orderBy: BigInt, $orderDirection: String) {3    tokens(4      first: $first, orderBy: $orderBy, orderDirection: $orderDirection5    ) {6      id7      tokenID8      contentURI9      metadataURI10    }11  }12`1314client15  .query({16    query: gql(tokensQuery),17    variables: {18      first: 10,19      orderBy: 'createdAtTimestamp',20      orderDirection: 'desc',21    },22  })23  .then((data) => console.log('Subgraph data: ', data))24  .catch((err) => {25    console.log('Error fetching data: ', err)26  })Visão Geral do URQL
O URQL está disponível nos ambientes: Node.js, React/Preact, Vue, e Svelte, com algumas funções mais avançadas:
- Sistema de cache flexível
 - Design extensível (mais fácil adicionar novas capacidades em cima dele)
 - Pacote leve (cerca de 5x mais leve que o Apollo)
 - Apoio para envios de arquivo e modo offline
 
Como retirar dados com o URQL
Vamos ver como retirar dados de um subgraph com o URQL:
Passo 1
Instale urql e graphql:
1npm install urql graphqlPasso 2
Depois, solicite um query da API com o seguinte código:
1import { createClient } from 'urql'23const APIURL = 'https://gateway.thegraph.com/api/<API_KEY>/subgraphs/id/<SUBGRAPH_ID>'45const tokensQuery = `6  query {7    tokens {8      id9      tokenID10      contentURI11      metadataURI12    }13  }14`1516const client = createClient({17  url: APIURL,18})1920const data = await client.query(tokensQuery).toPromise()