使用graphql-js的相关Http响应代码

时间:2015-10-24 22:30:51

标签: graphql graphql-js

好的就是这件事,我正在试图弄清楚如何使用graphql-js处理错误处理。 (在没有接力的情况下)

不够具体!?好吧,因为graphql-js捕获了解析函数中抛出的所有错误,所以我对如何正确处理错误和http响应感到困惑。

所以我想的很少,想知道你对它的看法!

  1. 即使包含错误,也始终使用graphql响应返回200 OK。 (不喜欢那个)

  2. 在result.errors [0]上切换大小写并返回关于错误的http响应,如果没有错误则返回result.data。 (这可能最终成为一个很长的开关案例)

    • 处理resolve函数中的错误处理以及throw和object(例如{ httpCode: 404, msg: 'No X found with the requested id' }

    • 在快递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源代码,但我想我最好先问问你们,因为我可能会遗漏一些明显的东西。

  3. 显然,欢迎更好的主意!

    干杯:D

1 个答案:

答案 0 :(得分:1)

我也想弄清楚这一点。

我设法提出的最好的是在我的解析器中抛出自定义错误。查看apollo-errors。我不确定这是否是最好的方式,但它可能适合你。