Add GraphQL GET support for subgraph endpoints

Abierto
#2,851 6 comentarios 6 reacciones 1 asignado Ver en GitHub

@dotansimha ya está trabajando en esto.

Desde el 4/1/2022.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

area/graphql

Do you want to request a feature or report a bug?

I understanding it as bug, since GET requests should be supported by GraphQL compatible services.

https://graphql.org/learn/serving-over-http/#http-methods-headers-and-body

What is the current behavior?

Currently when accessing a subgraph URL using a GET request one gets redirected to /graphql (which is expected), however the /graphql handler does not work as expected.

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem.

Here is an example:

curl \
  --data '{"query":"query{signals(where:{id:\"0xb855e1847f49326ea13daeb454707faf4577604828827a780a81620000c4c2cf\"}){timestamp}}"}' \
  'https://api.thegraph.com/subgraphs/id/QmXe1SyxVqha6ipb8d3hht4WZaVzy43MUVXLoqXvYrb9dX'

Returns:

{"data":{"signals":[{"timestamp":"1632414153"}]}}

The same is expected to but is not returned by:

curl \
  'https://api.thegraph.com/subgraphs/id/QmXe1SyxVqha6ipb8d3hht4WZaVzy43MUVXLoqXvYrb9dX/graphql?query=query%7Bsignals(where:%7Bid:%220xb855e1847f49326ea13daeb454707faf4577604828827a780a81620000c4c2cf%22%7D)%7Btimestamp%7D%7D'

Here is a sample GraphQL URL that supports both modes:

POST

curl \
  -H "Content-Type: application/json" \
  --data '{"query":"{movies{name,genre}}"}' \
  'https://n7b67.sse.codesandbox.io/graphql'

GET

curl \
  'https://n7b67.sse.codesandbox.io/graphql?query=%7Bmovies%7Bname,genre%7D%7D'

What is the expected behavior?

GET requests should return the same results as POST requests. The difference is that the payload is passed in the URL's query string of the GET request, instead of the POST body.

Lenguaje dominante
Rust
Estrellas
3.2k
Forks
1.1k
Merge medio
4 d 1 h
PR fusionados (30 d)
1

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de graphprotocol/graph-node

Todos los issues de graphprotocol/graph-node

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.