2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】GraphQLErrorにextensionを設定する

Posted at

概要

GraphQLの仕様ではエラーにextentionという領域があり、柔軟に項目が設定できます。(詳細についてはGraphQLのエラー設計についてを参照)
では、PythonでGraphQLサーバーを実装するときに、このextentionをどう設定する実装が良いのか、というメモ書きです。

対応案

実装のやり方は色々あると思いますが、こちらのstackoverflowの記事で紹介されている通り、graphql-coreのライブラリにある、GraphQLErrorのextensionに設定するやり方が良いかなと思います。ドキュメントについてはGraphQL Errorsにあります。
なお、上記のstackoverflowの記事ではGrapheneを使用する際の例で紹介されていますが、graphql-core自体はStrawberryやAriadneでも使用されているようですので、大体のライブラリで使えるエラーの実装と思います。

前提

以下の前提で試しに実装してみました。

  • 使用したpythonのバージョンは3.12.2です。
  • 使用したgraphql-coreのバージョンは3.2.3です。
  • graphqlのライブラリとして今回はStrawberryを使用してみました。

実装サンプル

@strawberry.type
class Mutation:
    @strawberry.mutation
    def add_sample_user(email: str, name: str) -> AddUserResponse:
        # execの処理内容は記載割愛
        result, is_success = add_sample_user_exec(email: str, name: str)
        if is_success:
            return result
        else:
            # Errorにextensionを設定する
            return GraphQLError(message="Failed exec add user", extensions={"code": 500})

その他参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?