コンテンツへスキップ

GraphQL

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

通常のFastAPIのパス操作とGraphQLを同じアプリケーションで組み合わせることができます。

ヒント

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

一般的なウェブAPIと比較して、長所短所があります。

ユースケースにおける利点欠点を上回るかどうかを評価してください。🤓

GraphQLライブラリ

ASGIサポートを持ついくつかのGraphQLライブラリをご紹介します。これらをFastAPIで使用できます。

Strawberryを使ったGraphQL

GraphQLを使用する必要がある場合、または使用する場合は、Strawberry推奨されるライブラリです。これは、FastAPIの設計に最も近い設計であり、すべて型アノテーションに基づいているためです。

ユースケースによっては、別のライブラリを使用する方が適切な場合がありますが、私に尋ねれば、おそらくStrawberryを試してみることをお勧めします。

StrawberryをFastAPIと統合する方法の簡単な例を以下に示します。

import strawberry
from fastapi import FastAPI
from strawberry.asgi import GraphQL


@strawberry.type
class User:
    name: str
    age: int


@strawberry.type
class Query:
    @strawberry.field
    def user(self) -> User:
        return User(name="Patrick", age=100)


schema = strawberry.Schema(query=Query)


graphql_app = GraphQL(schema)

app = FastAPI()
app.add_route("/graphql", graphql_app)
app.add_websocket_route("/graphql", graphql_app)

StrawberryのドキュメントでStrawberryの詳細を学ぶことができます。

また、FastAPIとStrawberryに関するドキュメントも参照してください。

Starletteの古いGraphQLApp

以前のバージョンのStarletteには、Grapheneと統合するためのGraphQLAppクラスが含まれていました。

Starletteから非推奨となりましたが、それを用いたコードがある場合は、同じユースケースをカバーし、ほぼ同一のインターフェースを持つstarlette-graphene3に簡単に移行できます。

ヒント

GraphQLが必要な場合は、カスタムクラスや型ではなく型アノテーションに基づいているため、Strawberryを確認することをお勧めします。

詳細情報

公式GraphQLドキュメントGraphQLの詳細を学ぶことができます。

上記で説明した各ライブラリについては、それぞれのリンクで詳細を読むことができます。