Ash Raf
Ash Raf

Reputation: 129

How to convert JSON format of data to GraphQL query format

I have a Json object and want to convert it to graphql query in order to post a request on graphql api. Can any one please provide any pointer to it as I am not able to proceed.

JSON object extracted from the POJO:
{
  "customer": {
     "idFromSource": "123", 
     "title": "Mrs", 
     "dateOfBirth": "1980-11-11"
  }
}

graphql query that I need to hit a post request:
{
  "query": "mutation {updateCustomer(customer: 
                    {idFromSource: \"123\", 
                    title: \"Mrs\", 
                    dateOfBirth: \"1980-11-11\"})
                     {idFromSource title dateOfBirth}}"
}

Upvotes: 7

Views: 14995

Answers (1)

Herku
Herku

Reputation: 7666

Declare the input as a variable in your query. Queries should be static. That means you never generate GraphQL code on the client. If you are doing that you are probably doing something wrong. I am not sure which frontend technology you are using but here is your query using JavaScript fetch:

let json = // ... parsed JSON

let query = `
  mutation customerMutation($customer: CustomerInput) { # Adjust typename
    updateCustomer(customer: $customer) {
      idFromSource
      title
      dateOfBirth
    }
  }
`;

fetch('/graphql', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  data: JSON.stringify({
    query,
    variables: { customer: json.customer }
  }),
});

The trick is that there is a type on the GraphQL API (I have here assumed it is called CustomerInput, please adjust it in the mutation) that has the same shape as your JSON object. The server will therefore happily accept the whole JSON object as a value for the $customer variable in the mutation. No conversion needed!

Upvotes: 6

Related Questions