GraphQL "Должен предоставить строку запроса" graphql-tag реагировать-apollo - PullRequest
0 голосов
/ 15 января 2019

Я использую 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 Ответ

0 голосов
/ 15 января 2019

Благодаря @ 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 || {})
  });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...