apollo-server/docs/source/requests.md
Laurin Quast df51fd90da Setup prettier (#724)
* Setup prettier and precommit hooks

* Format code with prettier

* Use husky because it works...

* Move prettier config to .prettierrc file

* Implement fixing markdown file formatting when running lint-fix script

* Format markdown files

* Add .json file formatting

* Fixes json file formatting

* Add pretteir linting step

* Remove tslint

* Use gitignore for prettier

* Fix linting errors

* Ignore submodule folder
2018-01-08 15:08:01 -08:00

1.7 KiB

title description
POST and GET format How to send requests to Apollo Server over HTTP.

Apollo Server 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 query), 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" }
}

Variables 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\" }"
}

Batching

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 GraphQL 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 variables and operationName 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: Mutations cannot be executed via GET requests.