Не удается отправить запрос GraphQL из клиента Apollo в серверную часть Rails GraphQL

Я использую Rails как серверную часть GraphQL, используя плагин graphql-ruby. Что касается размера внешнего интерфейса, я использую Apollo Client для своего проекта response / redux.

Вот моя передняя сторона:

const networkInterface = createNetworkInterface({
  uri: 'http://localhost:4001/graphql',
});
export const apolloClient = new ApolloClient({ networkInterface });

На моем сервере я успешно протестировал следующий запрос на http://localhost:4001/graphiql.

query{
  allAuthors{
    full_name,
    books{
      book_name,
      book_description,
      isbn
    }
  }
}   

Вот моя конфигурация маршрута рельсов:

if Rails.env.development?
    mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql"
  end

  post "/graphql", to: "graphql#execute"

Я пытаюсь получить аналогичные данные со стороны внешнего интерфейса. Вот мой код:

    const ALL_AUTHORS_QUERY = gql`
      query allAuthors {
        full_name,
        books{
          book_name,
          book_description,
          isbn
        }
      }
    `;
    apolloClient
      .query({
        query: ALL_AUTHORS_QUERY,
      })
      .then(response => console.log(response.data));
  }

Но после этого я встречаю следующее исключение:

POST http://localhost:4001/graphql 422 (Unprocessable Entity)

Подскажите пожалуйста, что я не так? Спасибо

@Edit 1: Я также пробую другой запрос на клиенте, но проблема все та же.

   const ALL_AUTHORS_QUERY = gql`
  query {
    allAuthors {
      full_name
      books {
        book_name
        book_description
        isbn
      }
    }
  }
`;
apolloClient
  .query({
    query: ALL_AUTHORS_QUERY,
  })
  .then(response => console.log(response.data));

person Trần Kim Dự    schedule 13.10.2017    source источник


Ответы (1)


На стороне клиента вы назвали свой запрос allAuthors, если allAuthors является типом GraphQL. Вам не нужно называть свой запрос необязательным. Однако allAuthors является обязательным типом корня запроса.

query allAuthors { ваш запрос начинается с этого, тогда как он должен быть таким query { allAuthors

person Scriptonomy    schedule 13.10.2017
comment
Не могли бы вы объяснить мне подробно, пожалуйста. Я не понимаю. - person Trần Kim Dự; 14.10.2017
comment
Я обновил, как вы сказали. проблема все та же. Я обновил свой вопрос по вашему запросу. Пожалуйста, взгляните. - person Trần Kim Dự; 14.10.2017