9

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}}"
}
2

1 Answer 1

7

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!

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.