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ドキュメントで詳しく学ぶことができます。
上記で説明した各ライブラリについても、リンクからさらに読むことができます。