コンテンツへスキップ

GraphQL

FastAPIASGI標準に基づいているため、ASGIと互換性のあるGraphQLライブラリも非常に簡単に統合できます。

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

ヒント

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

一般的なWeb APIと比較して、利点欠点があります。

あなたのユースケースにとって、利点欠点を補うかどうかを評価してください。🤓

GraphQLライブラリ

以下は、ASGIをサポートするGraphQLライブラリの一部です。これらをFastAPIで使用できます。

StrawberryとGraphQL

GraphQLを扱う必要がある場合、または扱いたい場合、Strawberry推奨されるライブラリです。なぜなら、その設計はFastAPIの設計に最も近く、すべてが型アノテーションに基づいているからです。

ユースケースによっては、別のライブラリを使用したいと思うかもしれませんが、もし私に尋ねられたら、おそらくStrawberryを試すことをお勧めします。

FastAPIとStrawberryを統合する方法の小さなプレビューです。

import strawberry
from fastapi import FastAPI
from strawberry.fastapi import GraphQLRouter


@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 = GraphQLRouter(schema)

app = FastAPI()
app.include_router(graphql_app, prefix="/graphql")

Strawberryについては、Strawberryドキュメントで詳しく学ぶことができます。

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

Starletteの古いGraphQLApp

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

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

ヒント

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

詳細はこちら

GraphQLについては、公式GraphQLドキュメントで詳しく学ぶことができます。

上記で説明した各ライブラリについても、リンクからさらに読むことができます。