Как преобразовать данные формата JSON в формат запроса GraphQL - PullRequest
1 голос
/ 25 января 2020

У меня есть Json объект, и я хочу преобразовать его в запрос graphql, чтобы опубликовать запрос на graphql api. Может ли кто-нибудь предоставить какой-либо указатель на это, поскольку я не могу продолжить.

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

1 Ответ

0 голосов
/ 25 января 2020

Объявите ввод как переменную в вашем запросе. Запросы должны быть стати 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 в мутации. Преобразование не требуется!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...