所以我正在尝试从REST转移到GraphQL,但是有一件小事使查询变得更困难了。
www.example.com?test=test
query: { test: "test" }
实际上在GraphQL中的body: { query: { test: "test" } }
下。因此,我想知道是否存在某种中间件或某种可以将其淘汰的中间件。
我通过{p>使用body-parser
var bodyParser =
require("body-parser")
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
extended: true
}))
答案 0 :(得分:1)
除非有特定的原因要亲自验证和执行GraphQL文档,否则可能应该使用现有的库。两种较流行的快递解决方案:
//express-graphql
const graphqlHTTP = require('express-graphql');
const { makeExecutableSchema } = require('graphql-tools');
const schema = makeExecutableSchema({
typeDefs,
resolvers,
});
app.use('/graphql', graphqlHTTP({
schema,
graphiql: true,
}));
app.listen(4000);
// apollo-server-express
const express = require('express');
const { ApolloServer, gql } = require('apollo-server-express');
const server = new ApolloServer({ typeDefs, resolvers });
server.applyMiddleware({ app });
app.listen(4000);
您也可以只使用apollo-server
,它在后台运行apollo-server-express。
const { ApolloServer, gql } = require('apollo-server');
// pass in a schema
const server = new ApolloServer({
schema
});
// or let Apollo make it for you
const server = new ApolloServer({
typeDefs,
resolvers,
});
server.listen()
这些解决方案都不要求您包括body-parser
并提供大量现成的额外功能。