Как сделать клиент graphql в Apollo? - PullRequest
0 голосов
/ 05 июня 2019

Я построил graphql сервер в apollo-server-express.Я могу использовать apollo playground для отправки запроса и получения ответа.Запрос, который я посылаю на игровую площадку:

{
  query: me {username}
}

, и я могу получить ожидаемый ответ на правой панели.Но у меня возникают проблемы с построением клиента с apollo-client.Ниже приведен исходный код:

const gql = require('graphql-tag');
const ApolloClient = require('apollo-boost').default;
const fetch = require('node-fetch').default;

const client = new ApolloClient({
  uri: 'http://localhost:8000/graphql',
  fetch
});

client
  .query({
    query: gql`
      query me {
        username
      }
    `
  })
  .then(data => console.log(data))
  .catch(error => console.error(error));

Я получаю 400 сообщение об ошибке при запуске вышеуказанного кода.Ниже приведено полное сообщение об ошибке.Я новичок в graphql и что не так с моим кодом?

name: 'ServerError',
     response:
      Response {
        size: 0,
        timeout: 0,
        [Symbol(Body internals)]: [Object],
        [Symbol(Response internals)]: [Object] },
     statusCode: 400,
     result: { errors: [Array] } },
  message:
   'Network error: Response not successful: Received status code 400',

Если я изменю запрос на query : me {, я получу эту ошибку: raphQLError: Syntax Error: Expected {, found : at syntaxError ...

Код сервера:

const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');

const app = express();

const schema = gql`
  type Query {
    me: User
  }

  type User {
    username: String!
  }
`;

const resolvers = {
  Query: {
    me: () => {
      return {
        username: 'Robin Wieruch'
      };
    }
  }
};
const server = new ApolloServer({
  typeDefs: schema,
  resolvers,
});

server.applyMiddleware({ app, path: '/graphql' });


app.listen({ port: 8000 }, () => {
  console.log('Apollo Server on http://localhost:8000/graphql');
});

...