41
votes

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?

7
"in graphql i can send update in URL." <-- Do you mean graphiql?Ahmad Ferdous
i'm use "postman" to send request.Gopard
you need to change "Content type" in postman's headers to "application/json" and in request body use "GraphQL" tab with "query" and "graphql variables"Vaha

7 Answers

54
votes

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}}"}
12
votes

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

5
votes

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

1
votes

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

eg - app.use(bodyParser.json()); // application/json

1
votes

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.

1
votes

Switch content type to JSON. Like this see Postman image

0
votes
  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