好的,事情就是这样,我正在尝试弄清楚如何使用 graphql-js 处理错误。(在没有继电器的情况下)
不够具体!?好的,因为 graphql-js 正在捕获解析函数中抛出的所有错误,所以我对如何正确处理错误和 http 响应有点困惑。
所以我没有什么想法,想知道你的想法!
即使包含错误,也始终使用 graphql 响应返回 200 OK。(不喜欢那个)
在 result.errors[0] 上切换大小写并针对错误返回 http 响应,如果没有错误则返回 result.data。(这最终可能是一个非常长的开关盒)
处理 resolve 函数和 throw 和 object 中的错误处理(例如
{ httpCode: 404, msg: 'No X found with the requested id' }
)在 express app.post 函数(或任何 Web 框架)中,具有以下内容:
app.post('/graphql', function(req, res) { let result = await graphql(req.body); if(result.errors.size) { let e = result.errors[0]; res.status(e.httpCode).send(e.msg); } res.json(result.data); }
由于错误对象的编组方式,这目前不起作用......或者至少我还没有找到如何将它从 graphql 中取出。我正在考虑可能会研究 graphql-js 源,但我想我最好先问你们,因为我可能会遗漏一些明显的东西。
显然,欢迎有更好的主意!
干杯:D