GraphQL“必须提供查询字符串” graphql-tag react-apollo
Posted
技术标签:
【中文标题】GraphQL“必须提供查询字符串” graphql-tag react-apollo【英文标题】:GraphQL "Must provide a query string" graphql-tag react-apollo 【发布时间】:2019-06-09 01:32:45 【问题描述】:我正在使用 react-apollo 和 graphql-tag 但似乎有些失败。服务器在 express 和 postgraphile 上运行。
我做错了吗?
邮递员(工作):
"query": "\n allPosts(first:10) \n nodes \n \tnodeId,\n id,\n content\n \n \n"
反应(失败);
Status Code: 400 Bad Request
Response: "errors":["message":"Must provide a query string."]
代码:
export const allPostsQuery = gql`
allPosts(first: 10)
nodes
nodeId,
id,
content
`;
. . .
<Query query= allPostsQuery > . . . </Query>
生成的请求负载看起来是这样的:
"operationName":null,"variables":,"query":"\n allPosts(first: 10) \n nodes \n nodeId\n id\n content\n __typename\n \n __typename\n \n\n"
我也尝试通过 Postman 运行这个有效载荷,它看起来还不错。
这是我的 Apollo 客户端配置:
return new ApolloClient(
connectToDevTools: process.browser,
s-s-rMode: !process.browser,
link: new HttpLink(
uri: 'http://127.0.0.1:8181/graphql',
credentials: 'include',
headers:
'Content-Type': 'application/json'
),
cache: new InMemoryCache().restore(initialState || )
);
【问题讨论】:
对我来说似乎是 mime 类型/标题不匹配。您可以记录标题,特别是邮递员和反应请求的content-type
吗? (从你的graphql端点内的服务器)
可能有帮助 github.com/Yelp/yelp-fusion/issues/278
谢谢,帮了大忙
【参考方案1】:
感谢@azium 我想通了。再次非常感谢。 Content-Type
正在自我复制:
Request Headers -> content-type: application/json, application/json
因此,删除 headers 对象可以解决问题。
function create (initialState)
return new ApolloClient(
connectToDevTools: process.browser,
s-s-rMode: !process.browser,
link: new HttpLink(
uri: 'http://127.0.0.1:8181/graphql',
credentials: 'include'
// headers:
// 'Content-Type': 'application/json' <-- remove the duplicate
//
),
cache: new InMemoryCache().restore(initialState || )
);
【讨论】:
以上是关于GraphQL“必须提供查询字符串” graphql-tag react-apollo的主要内容,如果未能解决你的问题,请参考以下文章
GraphQL“必须提供查询字符串” graphql-tag react-apollo
Apollo Server, Graphql - 必须提供查询字符串