graphprotocol / graphprotocol/graph-node

Add GraphQL GET support for subgraph endpoints

Offen
#2,851 6 Kommentare 6 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@dotansimha arbeitet bereits daran.

Seit 04.1.2022.

area/graphql
Vorherrschende Sprache
Rust
Sterne
3.2k
Forks
1.1k
Ø Merge
4 T. 1 Std.
Gemergte PRs (30 T.)
1

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.