0

我使用插件graphql-ruby将 Rails 用作 GraphQL 后端。在前端大小上,我将 Apollo Client 用于我的 react/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
    }
  }
}   

这是我的 Rails 路线配置:

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));
4

1 回答 1

0

在客户端,您已将查询命名为allAuthorsGraphQLallAuthors类型。您不必将查询命名为可选的。但是,allAuthors它是查询根的必需类型。

query allAuthors {你的查询从这个开始,什么时候应该是这样的query { allAuthors

于 2017-10-13T22:33:26.323 回答