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
2 Answers
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!
I use this module json-to-graphql-query
1
-
Vetalgo, please don't just post some tool or library as an answer. At least demonstrate how it solves the problem in the answer itself.
– jmoerdyk29 mins ago
Check stackoverflow.com/a/59577657/1776132
Jan 25, 2020 at 11:52
@Ash Raf you can use something like this github.com/dupski/json-to-graphql-query#readme
Mar 25, 2021 at 20:12