gpt4 book ai didi

graphql - Apollo Server 2 + Express : req. 后处理程序缺少正文

转载 作者:行者123 更新时间:2023-12-04 00:30:00 32 4
gpt4 key购买 nike

在版本 1 中可以使用此功能,但整个服务器配置已更改。这就是我所拥有的,在按照 Daniel 在评论中的建议将 bodyparser() 添加到 express 应用程序之后:

    const server = new ApolloServer({
typeDefs,
resolvers,
playground: {
settings: {
'editor.theme': 'light',
}
},
})

// Initialize the app
const app = express();
app.use(cors())
app.use(bodyParser.json())

server.applyMiddleware({
app
})

app.post('/calc', function(req, res){
const {body} = req;

console.log("HOWDYHOWDYHOWDY", body) // <== body is {}

res.setHeader('content-type', 'application/json')

calculate(body)
.then(result => res.send(result))
.catch(e => res.status(400).send({error: e.toString()}))
})

请求正文永远不会到达 app.post 处理程序,尽管处理程序被调用。不过,我看到它从浏览器中输出。有什么想法吗?

更新: Daniel 得到了正确答案,但我在使用的请求 header 中遇到了另一个问题。一旦我解决了这个问题,邮政处理程序就会收到 body 。

最佳答案

Apollo 的中间件将 bodyparser 中间件专门应用于 GraphQL 端点——它不会影响您的服务器公开的任何其他路由。为了正确填充req.body,需要自己添加bodyparser中间件,例如:

app.use(bodyParser.json())
app.post('/calc', routeHandler)

// or...
app.post('/calc', bodyParser.json(), routeHandler)

关于graphql - Apollo Server 2 + Express : req. 后处理程序缺少正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52750446/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com