unittestだけでGraphQLの認証テストを完結させる方法を解説します。
はじめに
fax送信サービスiamfax.comではDjango, 通信にはでgraphql
を使っています。
graphqlのライブラリとしてstrawberry
を使っているのですが、今回はそれをどのように運用しているのか紹介していきたいと思います。
何故 strawberry を採用したのか
djangoではメジャーなgraphqlライブラリとしてgraphene-djangoが有ります。もう1つが strawberryです。
strawberry
を採用したのですがその理由は
- mutation, query の書き方がスッキリに見えること
- 型ヒントや dataclass を積極的に利用して、GraphQL スキーマを定義できるため、コードが自然で直感的なこと
- 型チェックが厳密でIDEの補完機能が充実しているため、開発効率が向上すること
Graphene
ではスキーマ定義に特殊なクラス (ObjectType) を使用する必要があり、Pythonの型ヒントとの親和性が低かったです。
strawberry
はFastAPIなどで使われているイメージもあるかと思いますが、djangoでも問題なく使えます。最近 2024年あたりからdjangoで扱いやすくするようにstrawberry-djangoという形でサポートしてきました。
iamfax.comでは不要なdjango integrationを多様せず、できるだけ素のstrawberryを使っています。(例えば @strawberry_django.fieldとかではく、通常のstrawberry_fieldを使うなど)
strawberry-djangoは便利な機能を提供しますが、必ずしも必要な機能ばかりではありません。できるだけ素の strawberry を使うことで、ライブラリへの依存度を下げ、コードの可読性を高めることができます。
strawberry + djangoの記事を書こうと思ったのはstrawberry
を使った実践的な日本語の記事がなかったためです。(日本にdjango
人口も少ない、graphqlを普段から扱う人も少ないので仕方ないのですが。。)
導入にあたって、testや認証方法など、皆が知りたいところを紹介していく予定です
Strawberry Django 認証のにおけるエラーハンドリング方法
Strawberry Djangoを用いたユーザ認証する方法について解説します。
Django × Strawberry GraphQL 入門 - 基本設定とスキーマ設計
strawberry を Djangoに導入する方法を解説します。