#node.js #reactjs #express #graphql
Вопрос:
Я настраиваю приложение fullstack с express и GraphQL на бэкэнде против react на интерфейсе. Я поместил приложение react в папку клиента в серверном репозитории. Я направляю все URL-адреса, кроме api/graphql
клиентского приложения, однако я не смог найти способ направлять запросы graphql на сервер.
app.use(express.static('client/build'));
app.get('/api/graphql', (req, res) => {
//What to do here to direct traffic to graphql server
});
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname 'client/build/index.html'));
});
и я также создаю сервер с путем и подключаюсь middleware
с его путем, поэтому добавление graphqlHTTP
не работает.
const server = new ApolloServer({
schema,
context: async ({ req, res }) => {
return context;
},
});
await server.start();
server.applyMiddleware({
cors: corsConfiguration,
app,
path: '/api/graphql',
});
мы очень ценим любую помощь.
Спасибо
Ответ №1:
В GraphQL есть документация по его объединению с Express. Они предоставляют простой пример кода, который вы должны легко адаптировать:
var express = require('express');
var { graphqlHTTP } = require('express-graphql');
var { buildSchema } = require('graphql');
// Construct a schema, using GraphQL schema language
var schema = buildSchema(`
type Query {
hello: String
}
`);
// The root provides a resolver function for each API endpoint
var root = {
hello: () => {
return 'Hello world!';
},
};
var app = express();
app.use('/graphql', graphqlHTTP({
schema: schema,
rootValue: root,
graphiql: true,
}));
app.listen(4000);
console.log('Running a GraphQL API server at http://localhost:4000/graphql');