fastapi/docs/ja/docs/how-to/graphql.md

3.9 KiB

GraphQL

FastAPIASGI 標準に基づいているため、ASGI に対応した任意の GraphQL ライブラリを簡単に統合できます。

同じアプリケーション内で通常の FastAPI の path operation と GraphQL を組み合わせて使えます。

/// tip | 豆知識

GraphQL は非常に特定のユースケースを解決します。

一般的な Web API と比べると、長所短所 があります。

ご自身のユースケースで得られる 利点欠点 を補うかどうかを評価してください。 🤓

///

GraphQL ライブラリ

ASGI をサポートする GraphQL ライブラリの一部を以下に示します。FastAPI と組み合わせて使用できます:

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 ドキュメントでさらに学べます。

上記の各ライブラリについては、リンク先のドキュメントをご参照ください。