Docs
Buscar⌘ K
  • Início
  • Sobre o The Graph
  • Redes Apoiadas
  • Contratos de Protocolo
  • Subgraphs
    • Substreams
      • Token API
        • Hypergraph
          • 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