Я построил 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');
});