GraphQL пост-запрос в axios - PullRequest
       5

GraphQL пост-запрос в axios

0 голосов
/ 15 октября 2018

У меня проблема с GraphQL.Я хочу отправить запрос axios.post на мой сервер.Я могу сделать это в почтальоне:

{
    "query":"mutation{updateUserCity(userID: 2, city:\"test\"){id name age city knowledge{language frameworks}}} "
}

и в graphiql:

mutation {
  updateUserCity(userID: 2, city: "test") {
    id
    name
    age
    city
    knowledge {
      language
      frameworks
    }
  }
}

, но не могу сделать это в моем коде: ((вот мой фрагмент кода:

const data = await axios.post(API_URL, {
  query: mutation updateUserCity(${ id }: Int!, ${ city }: String!) {
    updateUserCity(userID: ${ id }, city: ${ city }){
      id
      name
      age
      city
      knowledge{
        language
        frameworks
      }
    }
  }
}, {
    headers: {
      'Content-Type': 'application/json'
    }
  })

что не так в моем коде?

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Значение параметра query, передаваемого в запросе, должно быть строкой, а имена переменных, передаваемых в запросы GraphQL, должны начинаться с префикса $.Вместо этого вы использовали строковые литералы для переменных в запросе.Также переменные могут быть переданы в пост-запросе с помощью клавиши variables.

Изменение кода на что-то вроде ниже должно заставить его работать:

const data = await axios.post(API_URL, {
  query: `mutation updateUserCity($id: Int!, $city: String!) {
    updateUserCity(userID: $id, city: $city){
      id
      name
      age
      city
      knowledge{
        language
        frameworks
      }
    }
  }`,
  variables: {
    id: 2,
    city: 'Test'
  }
}, {
    headers: {
      'Content-Type': 'application/json'
    }
  })
0 голосов
/ 28 марта 2019

Я хотел бы поделиться с вами моим простым рабочим примером

            let id = "5c9beed4a34c1303f3371a39";
            let body =  { 
                query: `
                    query {
                        game(id:"${id}") {
                            _id
                            title
                        }
                    }
                `, 
                variables: {}
            }
            let options = {
                headers: {
                    'Content-Type': 'application/json'
                }
            }
            axios.post('http://localhost:3938/api/v1/graphql',body, options)
                .then((response)=>{
                    console.log(response);
                });
0 голосов
/ 18 октября 2018

Кажется, вы пытаетесь передать переменные в запрос.Если я не ошибаюсь, то, что вы имеете в вызове axios и другие, отличается.

const data = await axios.post(API_URL, {
  query: `
    updateUserCity(userID: ${id}, city:${city}){
      id
      name
      age
      city
      knowledge{
        language
        frameworks
      }
    }
  `
}, {
  headers: {
    'Content-Type': 'application/json'
  }
});

Я считаю, что это должно работать, если у вас есть переменные id и city, определенные до этого вызова.

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