GraphQL¶
FastAPI は ASGI 標準に基づいているため、ASGIと互換性のある任意の GraphQL ライブラリを非常に簡単に統合できます。
通常のFastAPIの「パス操作」を、同じアプリケーション上でGraphQLと組み合わせることができます。
ヒント
GraphQL は、特定のユースケースを解決します。
一般的な Web API と比較して、利点 と 欠点 があります。
あなたのユースケースにとって 利点 が 欠点 を補うかどうかを評価してください。 🤓
GraphQLライブラリ¶
以下に、ASGI をサポートする GraphQL ライブラリをいくつか紹介します。これらを FastAPI と一緒に使用できます。
- Strawberry 🍓
- Ariadne
- Tartiflette
- Tartiflette ASGI を使用してASGI統合を提供
- Graphene
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ドキュメントで詳細を確認できます。
上記の各ライブラリについても、リンクから詳細を読むことができます。