Docs
Buscar⌘ K
  • Início
  • Sobre o The Graph
  • Redes Apoiadas
  • Contratos de Protocolo
  • Subgraphs
    • Substreams
      • Token API
        • AI Suite
          • Indexação
            • Recursos
              Subgraphs > Queries

              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-cli

              Passo 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.graphql

              Passo 4

              Execute o seguinte comando na CLI do Graph Client para gerar códigos JavaScript digitados e prontos para uso:

              1graphclient build

              Passo 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 App

              Importante: 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 graphql

              Passo 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 graphql

              Passo 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()
              ⁠Editar no GitHub⁠

              Etiqueta de QuerySistemas Distribuídos
              Nesta página
              • Como Resgatar Pontos Finais da GraphQL
              • Ponto Final do Subgraph Studio
              • Ponto Final da The Graph Network
              • Como Usar Clientes GraphQL Populares
              • Graph Client
              • Como Resgatar Dados com o Graph Client
              • Cliente Apollo
              • Como Resgatar Dados pelo Cliente Apollo
              • Visão Geral do URQL
              • Como retirar dados com o URQL
              The GraphStatusRede de TestesAtivos de MarcaFórumSegurançaPolítica de PrivacidadeAcordo de Serviço