GraphQL¶
🌐 AI と人間による翻訳
この翻訳は、人間のガイドに基づいて AI によって作成されました。🤝
原文の意図を取り違えていたり、不自然な表現になっている可能性があります。🤖
AI LLM をより適切に誘導するのを手伝う ことで、この翻訳を改善できます。
FastAPI は ASGI 標準に基づいているため、ASGI に対応した任意の GraphQL ライブラリを簡単に統合できます。
同じアプリケーション内で通常の FastAPI の path operation と GraphQL を組み合わせて使えます。
豆知識
GraphQL は非常に特定のユースケースを解決します。
一般的な Web API と比べると、長所 と 短所 があります。
ご自身のユースケースで得られる 利点 が 欠点 を補うかどうかを評価してください。 🤓
GraphQL ライブラリ¶
ASGI をサポートする GraphQL ライブラリの一部を以下に示します。FastAPI と組み合わせて使用できます:
- Strawberry 🍓
- Ariadne
- Tartiflette
- ASGI 連携用の Tartiflette 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")
🤓 Other versions and variants
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 の連携に関するドキュメントもあります。
Starlette の旧 GraphQLApp¶
以前の Starlette には、Graphene と統合するための GraphQLApp クラスが含まれていました。
これは Starlette からは非推奨になりましたが、もしそれを使用しているコードがある場合は、同じユースケースをカバーし、ほぼ同一のインターフェースを持つ starlette-graphene3 へ容易に移行できます。
豆知識
GraphQL が必要であれば、依然として Strawberry の利用を推奨します。独自のクラスや型ではなく、型アノテーションに基づいているためです。
さらに学ぶ¶
GraphQL については、公式 GraphQL ドキュメントでさらに学べます。
上記の各ライブラリについては、リンク先のドキュメントをご参照ください。