Storefront API - content-type: application/graphql gives parse error

I’m just trying to follow the basic example of the Storefront API, and it seems if I set Content-Type to application/graphql (see screenshots) it gives me this error:

{
  "errors": [
    {
      "message": "Parse error on \"query\" (STRING) at [1, 2]",
      "locations": [
        {
          "line": 1,
          "column": 2
        }
      ]
    }
  ]
}

Now if I set Content-Type to application/json it seems to work, but then I can’t get it to return any product or collection data. Is this a documentation error or am I doing something something basic wrong here?

3 Likes

Hi @drewrbaker ,

For the most part with any HTTP client or library you would use application/json. Setting the header to application/graphql means to explicitly treat the HTTP POST body as the contents of a GraphQL query string, so the format you are passing is invalid. See https://graphql.org/learn/serving-over-http/ for a little more explanation.

To get more collection or product data you would need to add more query parameters to the query you are making. All you are requesting is the id and handle. Check our documentation for all the possible parameters.

3 Likes

Thanks Ryan. I’d recommend you update the docs about using application/json, it tripped us up for awhile. Thanks!

1 Like

@drewrbaker @Ryan

Yes!!! This same documentation issue caused us to waste days! Please update ASAP!

The documentation in question is here. It shows the Content-Type as application/graphql, but for client tool posting, it should be application/json.

1 Like

@MozzoERP It needs to be application/graphql for CURL like the example says. I will mention to the docs team that we can add a note about HTTP clients requiring application/json.

3 Likes

Just a reminder to update the documentation. This also gave me a hard time.

1 Like