我刚开始接触 GraphQL。我正在使用 GraphQL.js 和 express。现在我正在尝试使用硬编码的 JSON 作为我的 javascript 文件中的数据来构建一个简单的示例。然后我想使用 express 中间件通过 curl 或 insomnia 来监听 HTTP 请求。在中间件中,我想使用 body-parser 提取查询。现在我遇到了解析器的问题。
请看一下我的代码。
var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema, graphql } = require('graphql');
var bodyParser = require('body-parser');
var schema = buildSchema(`
type Product {
name: String!
price: Int!
}
type Query {
product(name: String): Product
}
`);
var products = {
'Mango': {
name: 'Mango',
price: 12,
},
'Apfel': {
name: 'Apfel',
price: 3,
},
};
resolvers = {
Query: {
product: (root, { name}) => {
return products[name];
},
},
};
var app = express();
app.use(bodyParser.text({ type: 'application/graphql' }));
app.post('/graphql', (req, res) => {
graphql(schema, req.body)
.then((result) => {
res.send(JSON.stringify(result, null, 2));
});
});
app.listen(4000);
这不起作用。当我使用 curl 发布查询时
curl -XPOST -H "Content-Type: application/graphql" -d "{product(name: \"Apfel\"){name price}}" http://localhost:4000/graphql
我得到响应 {"data". {“产品”:空}}。解析器不会被调用。我怎样才能正确地做到这一点?