GraphQL "Должен предоставить строку запроса" graphql-tag реагировать-apollo
Я использую response-apollo и graphql-tag, но что-то не получается. Сервер работает на экспресс и постграф.
Я делаю что-то неправильно?
Почтальон (работает):
{
"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"}
Я также попытался запустить эту полезную нагрузку через Почтальон, и все выглядело нормально.
Это мой клиентский конфиг Apollo:
return new ApolloClient({
connectToDevTools: process.browser,
ssrMode: !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 || {})
});
1 ответ
Решение
Благодаря azium я понял это. Еще раз большое спасибо. Content-Type
Дублировал себя:
Request Headers -> content-type: application/json, application/json
Таким образом, удаление объекта заголовков решает проблему.
function create (initialState) {
return new ApolloClient({
connectToDevTools: process.browser,
ssrMode: !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 || {})
});
}