我使用插件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 route config:
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));
答案 0 :(得分:0)
在客户端,当allAuthors
是GraphQL类型时,您已将查询命名为allAuthors
。您不必将您的查询命名为可选的。但是,allAuthors
是查询根目录的必需类型。
query allAuthors {
您的查询从此开始,它应该像query { allAuthors