Consultas FUEL GraphQL
Índice de contenidos
· ¿Qué es GraphQL?
∘ HTTP y APIs
∘ ¿Cómo funciona GraphQL?
· Consultas GraphQL
· Consultas ejemplo
∘ Versión del nodo
∘ Nombre de la Chain
∘ Último bloque
∘ Salud del nodo
∘ Peers
· Consultas con parámetros
∘ Información del bloque por altura
∘ Obtener el balance de activos de una dirección
· Referencias
¿Qué es GraphQL?
GraphQL es un lenguaje de consulta para APIs y un entorno de ejecución para realizar estas consultas con datos existentes. Permite a los clientes pedir exactamente los datos que necesitan, mejorando la eficiencia y reduciendo la cantidad de datos transferidos en comparación con las APIs REST tradicionales.
HTTP y APIs
HTTP (Protocolo de Transferencia de Hipertexto) es un conjunto de reglas para acceder a recursos en la web. Estos recursos pueden ser archivos HTML, datos de una base de datos, fotos, texto, etc. Estos recursos se hacen disponibles a través de una API (Interfaz de Programación de Aplicaciones), a la cual se puede acceder mediante el protocolo HTTP. Esto permite a los desarrolladores solicitar recursos de manera eficiente.
¿Cómo funciona GraphQL?
GraphQL trabaja definiendo tipos y las propiedades disponibles en esos tipos (esquema) y definiendo resolvers, que son funciones responsables de obtener los datos para cada campo.
Las consultas en GraphQL permiten leer datos de manera específica y eficiente. Puedes pedir exactamente los datos que necesitas y obtener múltiples recursos en una sola consulta.
Para realizar alguna consulta visita el RPC Endpoint de Fuel:
Puedes utilizar tu propio nodo en el caso de que estés corriendo un nodo de Fuel, +info:
Consultas GraphQL
Un simple ejemplo, consulta la versión del nodo.
query { nodeInfo{nodeVersion}}
Si estás corriendo un nodo puedes ejecutarlo en CLI:
curl -X POST http://0.0.0.0:4000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ nodeInfo{nodeVersion}}"}'
También podemos copiar el código CLI para utilizarlo directamente en tu servidor mediante el botón COPY CURL
curl 'https://devnet.fuel.network/v1/graphql' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Connection: keep-alive' -H 'DNT: 1' -H 'Origin: https://devnet.fuel.network' --data-binary '{"query":"query { nodeInfo{nodeVersion}}","variables":{"height":"3412"}}' --compressed
Consultas ejemplo
Versión del nodo
Devuelve la versión del app del nodo
query { nodeInfo{nodeVersion}}
Nombre de la Chain
Devuelve el nombre de la Chain
query { chain{name}}
CLI
curl -X POST http://0.0.0.0:4000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ chain{name}}"}'
Último bloque
Devuelve la altura del último bloque procesado.
query { chain{latestBlock{ id height}}}
CLI
curl -X POST http://0.0.0.0:5000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ chain { latestBlock { id height } } }"}'
Salud del nodo
Indica el estado del nodo
{"data":{"health":true}}
CLI
curl -X POST http://0.0.0.0:5000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ health }"}'
Peers
Devuelve los peers del nodo
query { nodeInfo{peers{id}}}
CLI
curl -X POST http://0.0.0.0:5000/v1/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ nodeInfo{peers{id}} }"}'
Consultas con parámetros
La API dispone de otro tipo de consultas que permiten la introducción de parámetros llamados query variables.
Información del bloque por height
Muestra la id de un bloque introduciendo su height
query Block($height: U64) { block(height: $height) { id } }
Variables:
{"height": "3412"}
Obtener el balance de activos de una dirección
Muestra el balance de los actibos criptográficos asociados a una wallet introduciendo su dirección
query Balance($address: Address, $assetId: AssetId) {
balance(owner: $address, assetId: $assetId) {
owner
amount
assetId
}
}
Variables:
{
"address": "0xf4191cdce0e418264a745b4c1011dfa708a1da9face011aac8703537ce83a18a",
"assetId": "0xf8f8b6283d7fa5b672b530cbb84fcccb4ff8dc40f8176ef4544ddb1f1952ad07"
}
Referencias
Introduction to the Fuel GraphQL API
Twitter | Medium | LinkedIn | Discord | Telegram | cumulo.pro