Объявите ввод как переменную в вашем запросе. Запросы должны быть стати c. Это означает, что вы никогда не генерируете код GraphQL на клиенте. Если вы делаете это, вы, вероятно, делаете что-то не так. Я не уверен, какую технологию внешнего интерфейса вы используете, но вот ваш запрос, использующий 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 }
}),
});
Хитрость в том, что в API GraphQL есть тип (я предположил, что он называется CustomerInput
, пожалуйста, настройте его в мутации), которая имеет ту же форму, что и ваш JSON объект. Поэтому сервер с радостью примет весь объект JSON в качестве значения переменной $customer
в мутации. Преобразование не требуется!