コンテンツへスキップ

GraphQL

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

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

ヒント

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

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

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

GraphQLライブラリ

以下に、ASGI をサポートする GraphQL ライブラリをいくつか紹介します。これらを FastAPI と一緒に使用できます。

Strawberry と GraphQL

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

あなたのユースケースによっては、別のライブラリを使用したいと思うかもしれませんが、私に尋ねられたら、おそらく 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ドキュメントで詳細を確認できます。

上記の各ライブラリについても、リンクから詳細を読むことができます。