Launch GraphOS Studio
Apollo Server 2 is officially end-of-life as of 22 October 2023. Learn more about upgrading.

POST and GET format

How to send requests to Apollo Server over HTTP.

accepts both GET and POST requests.

POST requests

Apollo Server accepts POST requests with a JSON body. A valid request must contain either a query or an operationName (or both, in case of a named ), and may include variables. Here's an example for a valid body of a post request:

"query": "query aTest($arg1: String!) { test(who: $arg1) }",
"operationName": "aTest",
"variables": { "arg1": "me" }

can be an object or a JSON-encoded string. I.e. the following is equivalent to the previous query:

"query": "query aTest($arg1: String!) { test(who: $arg1) }",
"operationName": "aTest",
"variables": "{ \"arg1\": \"me\" }"


A batch of queries can be sent by simply sending a JSON-encoded array of queries, e.g.

[{ query: '{ testString }' }, { query: 'query q2{ test(who: "you" ) }' }];

If a batch of queries is sent, the response will be an array of responses.

If Apollo Server is running under a different origin than your client, you will need to enable CORS support on the server, or proxy the GraphQL requests through a web server under the main origin.

GET requests

Apollo Server also accepts GET requests. A GET request must pass query and optionally and Name in the URL.

Here is the same query from above in a well-formatted GET request to Apollo Server:

GET /graphql?query=query%20aTest(%24arg1%3A%20String!)%20%7B%20test(who%3A%20%24arg1)%20%7D&operationName=aTest&variables=me

caveat: cannot be executed via GET requests.

Edit on GitHubEditForumsDiscord

© 2024 Apollo Graph Inc.

Privacy Policy