How to send graphql query by postman?

I use

POST type
URL http://######/graphql
Body: 
query: "query: "{'noteTypes':  {'name', 'label', 'labelColor', 'groupName', 'groupLabel', 'imageUrl'}}"

But it return "message": "Must provide query string."


Solution 1:


There's a better way to do it using the REST client Insomnia

Docs are here, how to send graphql queries: https://support.insomnia.rest/article/61-graphql


Below are the steps for postman

Step 1.

Run the GraphiQL in Chrome, open the Chrome Dev Console, click the Network tab, and make the query from graphiql, when you make the query, network tab will show the graphql request...

enter image description here

Step 2.

From the graphql request copy the request query, Select the Copy as cURL (cmd)

enter image description here

Step 3.

Open Postman, In the Top-Left click on the Import button, after you click Import you have to click the Paste Raw Text, and paste the copied cURL request as done in step2 after it's done click the Import

enter image description here

Step 4.

Postman is ready to send the Graphql request, Just Click on the Send Button, you will see the Response in the Response Box in body as below

enter image description here

Step 5.

To see how the query is being sent click on the Body tab next to Headers, you will get know how to provide the fields from postman in JSON format.

e.g: edges {\n node {\n id\n jobId\n }\n, If you want to view another field then you need to add it in with the suffix \n

like if need name then : edges {\n node {\n id\n jobId\n name\n }\n

\n here just means to represent a new line. Instead, you can make it simpler by providing a clear and illustrative JSON like below

===========================================================================

Note: The body type must be raw with application/json content-type. So, the query must be a valid JSON with quotes ".."

{  
   "query":"{viewer {user {edges {node {id jobId name }}}}}"
}

===========================================================================

enter image description here

you can directly start from step 5 if you know how to send the query in body and other things too that needs to be required while making a request from postman

enter image description here

With simplified JSON

enter image description here

Solution 2:

You don't need INSOMNIA in case the GraphQL server responds to Content-type: application/graphql or postman.setEnvironmentVariable,

Just do it:

In Headers tab: Content-Type: application/graphql

In Body tab, "raw" selected, put your query

enter image description here

Solution 3:

Adding this for anyone searching on the topic ... you can utilize and test GraphQL calls far better and more easily with Insomnia:

https://insomnia.rest

It's been fantastic for GraphQL development.

Solution 4:

There's a simple way to do it. Use a pre-request script to stringify the payload (source).

Step 1.

In the body of the request put a placeholder for the payload.

{
    "query":{{query}}
}

Step 2.

Create the payload in the pre-request script and store it in an environment variable.

postman.setEnvironmentVariable("query", JSON.stringify(
`
{
  search(query: "test", type: ISSUE, first: 10) {
    issueCount
    edges {
      node {
        ... on Issue {
          title
          id
          state
          closed
          repository {
            name
          }
        }
      }
    }
  }
}
`
));

That's it.