Documentation
Essentials
Mutations

Mutations

Mutations are transformed into POST requests.

Given the following example:

type Comment {
  id: ID
  text: String
}
 
type Mutation {
  addComment(text: String!) Comment
}

Sofa will create a POST /add-comment route that accepts a { text } body.

curl --header "Content-Type: application/json" \
  --request POST \
  --data '{"text":"Sofa is awesome!"}' \
  http://localhost:3000/api/add-comment

For mutations to properly work with JSON bodies, you will need to have bodyParser.json() or a similar module as a middleware, else you will have to pass arguments via url paramaters.

Heres an example of without body-parser:

type Comment {
  id: ID
  text: String
}
 
type Mutation {
  addComment(text: String!) Comment
}

Will mean that you will have to access it like this:

curl --header "Content-Type: application/json" \
  --request POST \
  http://localhost:3000/api/add-comment?text=Sofa%20is%20awesome%21

How to enable body-parser:

npm i body-parser

Then you can simply initialise it like this:

import bodyParser from "body-parser";
 
app.use(bodyParser.json());