56

I use Express-graphql middleware. I send the following request in the body line:

POST /graphql HTTP/1.1
Host: local:8083
Content-Type: application/graphql
Cache-Control: no-cache
Postman-Token: d71a7ea9-5502-d5fe-2e36-0ae49c635a29

{
   testing {
      pass(id: 1) {
        idn
      }
    }
}

and have error

{
  "errors": [
    {
      "message": "Must provide query string."
    }
  ]
}

in graphql i can send update in URL.

URL string is too short. i must send update model like

mutation {
  update(id: 2, x1: "zazaza", x2: "zazaza", x3: "zazaza" ...(more more fields)...) {
    idn
  }
}

I think its must be in request body. How can I send 'update' query or that I'm doing wrong?

wowkin2
  • 5,895
  • 5
  • 23
  • 66
Gopard
  • 922
  • 1
  • 12
  • 26

8 Answers8

67

Post request needs to manage headers info.

  1. Using Http client - Content-Type: application/json

  2. Using Postman client - Content-Type: application/graphql

but request body looks like string

{"query":"mutation{update(id:1,x1:\"zazaz\",x2:\"zazaz\"......){id x1 x2}}"}
wowkin2
  • 5,895
  • 5
  • 23
  • 66
Gopard
  • 922
  • 1
  • 12
  • 26
13

If you are using graphql and want to test it using postman or any other Rest client do this.

In postman, select POST method and enter your URL and set Content-Type as application/graphql then pass your query in the body.

Example:

http://localhost:8080/graphql
Mehtod: POST
Content-Type: application/graphql
Body: 
  query{
    FindAllGames{
    _id
    title
    company
    price
    year
    url
   }
 }

Thats it you will get the response.

enter image description here

Prasanth Jaya
  • 4,407
  • 2
  • 23
  • 33
7

Using Postman Version 7.2.2 I had a similar issue. This version of Postman supports Graphql out of the box. Changing the Content-type to application/json fixed it for me.

Image showing the Content-type in Postman

smac89
  • 39,374
  • 15
  • 132
  • 179
gbengaoyetade
  • 700
  • 8
  • 6
6

This generally occurs when your 'express-graphql' doest receive any params. You need to added a json/applicaton parser in your application.

npm install body-parser

eg -

const bodyParser = require('body-parser');

app.use(bodyParser.json()); // application/json
Jeff Tian
  • 5,210
  • 3
  • 51
  • 71
Shivam Pandey
  • 94
  • 2
  • 1
5

for me worked like as following:

In the body

Body postman

In the Headers

Header postman

Don't forget mark GraphQl [x] on Body settings

enter image description here

And how was quoted before changes the verb to POST.

smac89
  • 39,374
  • 15
  • 132
  • 179
3
  1. go to the relevant web page and open "inspect" (by write click -> inspect || Ctrl+Shift+I in chrome)

  2. go to the network tab and copy the cURL command enter image description here

  3. open the postman ,then import -> raw text

  4. paste the copied command enter image description here

  5. then,continue ->

enter image description here

janadari ekanayaka
  • 3,742
  • 2
  • 13
  • 17
1

Switch content type to JSON. Like this see Postman image

smac89
  • 39,374
  • 15
  • 132
  • 179
1

Check if you are using correct protocol in your Postman requests.

I used HTTP instead of HTTPS and this caused the same error.

Changes of content-type, raw or json instead of graphql type didn't help.

wowkin2
  • 5,895
  • 5
  • 23
  • 66