5

これが問題です。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ソースを調べようと考えていますが、明らかな何かが欠けている可能性があるので、最初に皆さんに尋ねたほうがよいと思いました.

明らかに、より良いアイデアは大歓迎です!

乾杯 :D

4

1 に答える 1