无法将 GraphQL 查询从 Apollo 客户端发送到 Rails GraphQL 后端
Posted
技术标签:
【中文标题】无法将 GraphQL 查询从 Apollo 客户端发送到 Rails GraphQL 后端【英文标题】:Cannot send GraphQL query from Apollo Client to Rails GraphQL backend 【发布时间】:2018-03-25 22:10:00 【问题描述】:我使用 Rails 作为 GraphQL 后端,使用插件 graphql-ruby。在前端大小方面,我将 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)
请告诉我我做错了什么?谢谢
@编辑 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));
【问题讨论】:
【参考方案1】:在客户端,当 allAuthors
是 GraphQL 类型时,您已将查询命名为 allAuthors
。您不必将查询命名为可选的。但是,allAuthors
是查询根的必需类型。
query allAuthors
你的查询以这个开头,什么时候应该是这样的query allAuthors
【讨论】:
你能详细解释一下吗?我不明白。 我已经按照你说的更新了。问题还是一样。我已经更新了我的问题以供您查询。请看一看。以上是关于无法将 GraphQL 查询从 Apollo 客户端发送到 Rails GraphQL 后端的主要内容,如果未能解决你的问题,请参考以下文章
无法在单个 GraphQL 查询中组合本地和远程数据(Next.js + Apollo)