3.9 KiB
GraphQL
FastAPI は ASGI 標準に基づいているため、ASGI に対応した任意の GraphQL ライブラリを簡単に統合できます。
同じアプリケーション内で通常の FastAPI の path operation と GraphQL を組み合わせて使えます。
/// tip | 豆知識
GraphQL は非常に特定のユースケースを解決します。
一般的な Web API と比べると、長所 と 短所 があります。
ご自身のユースケースで得られる 利点 が 欠点 を補うかどうかを評価してください。 🤓
///
GraphQL ライブラリ
ASGI をサポートする GraphQL ライブラリの一部を以下に示します。FastAPI と組み合わせて使用できます:
- Strawberry 🍓
- Ariadne
- Tartiflette
- ASGI 連携用の Tartiflette ASGI あり
- Graphene
Strawberry で GraphQL
GraphQL が必要、または利用したい場合は、Strawberry を推奨します。FastAPI の設計に最も近く、すべてが型アノテーションに基づいています。
ユースケースによっては他のライブラリを選ぶ方がよい場合もありますが、私に尋ねられれば、おそらく Strawberry を試すことを勧めるでしょう。
FastAPI と Strawberry を統合する方法の簡単なプレビューです:
{* ../../docs_src/graphql_/tutorial001_py310.py hl[3,22,25] *}
詳細は Strawberry のドキュメントをご覧ください。
また、Strawberry と FastAPI の連携に関するドキュメントもあります。
Starlette の旧 GraphQLApp
以前の Starlette には、Graphene と統合するための GraphQLApp クラスが含まれていました。
これは Starlette からは非推奨になりましたが、もしそれを使用しているコードがある場合は、同じユースケースをカバーし、ほぼ同一のインターフェースを持つ starlette-graphene3 へ容易に移行できます。
/// tip | 豆知識
GraphQL が必要であれば、依然として Strawberry の利用を推奨します。独自のクラスや型ではなく、型アノテーションに基づいているためです。
///
さらに学ぶ
GraphQL については、公式 GraphQL ドキュメントでさらに学べます。
上記の各ライブラリについては、リンク先のドキュメントをご参照ください。